home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VWINHIGH.DOC < prev    next >
Text File  |  1993-04-14  |  95KB  |  3,476 lines

  1. {
  2. ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix Win/User Interface High-Level Unit (VUIHIGH)
  5.  Copyright 1991,1992 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8. ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  --------  --------  ------------------------------------------------------
  14.  
  15.  jrt       03/17/93  Merged beta015 with beta015doc to create beta016
  16.                      (added in WDrawMenuB)
  17.  
  18.  lpg       03/15/93  Added Source Documentation
  19.  
  20.  lpg       03/06/93  Fixed bugs with WFormTxtMask (improper j/i index when
  21.                      no data entered, LJust ) and (trapped in loop on no
  22.                      S data).  Turned on Events.  Still need to add Event
  23.                      for LFArr on j1 and RTArr on End.
  24.  
  25.  mep       02/11/93  Cleaned up code for beta release
  26.                      Fixed for DPMI mode.
  27.  
  28.  jrt       02/08/93  Sync with beta 0.12 release
  29.  
  30.  jrt       02/01/93  Mods to support screen sizes other than 80x25
  31.  
  32.  jrt       12/07/92  Sync with beta 0.11 release
  33.  
  34.  jrt       11/21/92  Sync with beta 0.08
  35.  
  36.  jrt       11/21/92  Zapped WMenu routine changes that supported noactive
  37.                      items.  Integrated with jr copy of VWINHIGH that
  38.                      included code for WinEnv.SaveScreen handling and
  39.                      font restoration; plus new code for control panel.
  40.  
  41.  lpg       11/19/92  Added function : WVertLine
  42.  
  43.  lpg       10/18/92  Modified WMenu Routines to support NonActive Items.
  44.                      Added New Fuunctions:
  45.                        AddMenuItem,MenuItemOff
  46.                      Should Clean up and Standardize all Menu Functions!
  47.  
  48.  lpg       10/08/92  Modified WReadTxtMask to Support Justified Entry
  49.                      Added New Functions:
  50.                        WWriteDate,WReadDate
  51.  
  52.  lpg       10/05/92  Added New Functions:
  53.                        WWriteTxtMask,WWriteNumMask,WWriteFloat,AddMask,
  54.                        WReadTxtmask,WReadNumMask,WReadFloat,DelMask
  55.  
  56.  jrt       09/01/92  First logged revision.
  57.  
  58. ════════════════════════════════════════════════════════════════════════════
  59. }
  60.  
  61.  
  62. Unit VWinHigh;
  63.  
  64.  
  65. Uses
  66.  
  67.   VTypes,
  68.   VGen,
  69.   VFont,
  70.   VMulti,
  71.   VMem,
  72.   VIn,
  73.   VCRT,
  74.   VWinlow,
  75.   VDates,
  76.   Dos;
  77.  
  78.  
  79. Const
  80.  
  81.                               {-----------------------}
  82.   IfcSignature  = $0F0F0;     {*** do not change!! ***}
  83.   IfcSignature2 = $0E0E0;     {*** do not change!! ***}
  84.                               {-----------------------}
  85.  
  86. Type
  87.  
  88.   PopupProc  = Procedure;
  89.  
  90.   WIfcPtr    = ^WIfcRecord;
  91.  
  92.   WIfcRecord = Record
  93.     NamePtr     : ^STRING;
  94.     Version     : WORD;        {---------------------}
  95.     CmdEntryPtr : PopupProc;   { Do not change order }
  96.     PrevIfc     : WIfcPtr;     {---------------------}
  97.     NextIfc     : WIfcPtr;
  98.     CSDataPtr   : POINTER;
  99.     UserData    : POINTER;
  100.   END;
  101.  
  102.   {------------------------------------}
  103.   { Procedure and function definitions }
  104.   {------------------------------------}
  105.  
  106.   Function  WReadKey                                          : CHAR;
  107.  
  108.  
  109.  
  110.  
  111.   Procedure WDrawMenu(                 Menu       : PMenuMax;
  112.                                        NumChoices : INTEGER;
  113.                                        Cols       : INTEGER;
  114.                                        Rows       : INTEGER;
  115.                                        Keys       : ST80    );
  116.  
  117.  
  118.   Procedure WMenu(                     Menu       : PMenuMax;
  119.                                        NumChoices : INTEGER;
  120.                                        Cols       : INTEGER;
  121.                                        Rows       : INTEGER;
  122.                                        Keys       : ST80;
  123.                                var Choice     : INTEGER );
  124.  
  125.   Procedure WDrawMenuB(                Menu       : PMenuMax;
  126.                                        NumChoices : INTEGER;
  127.                                        Cols       : INTEGER;
  128.                                        Rows       : INTEGER;
  129.                                        Keys       : ST80;
  130.                                        FrameStart : INTEGER;
  131.                                        Choice     : integer  );
  132.  
  133.  
  134.   Procedure WMenuB(                    Menu       : PMenuMax;
  135.                                        NumChoices : INTEGER;
  136.                                        Cols       : INTEGER;
  137.                                        Rows       : INTEGER;
  138.                                        Keys       : ST80;
  139.                                    var FrameStart : INTEGER;
  140.                                var Choice     : INTEGER );
  141.  
  142.   Procedure WWriteTxt(                 MaxLen    : INTEGER;
  143.                                        FC        : BYTE;
  144.                                        BC        : BYTE;
  145.                                        Txt       : ST80     );
  146.  
  147.   Procedure WWriteNum(                 MaxLen    : INTEGER;
  148.                                        FC        : BYTE;
  149.                                        BC        : BYTE;
  150.                                        Num       : LONGINT  );
  151.  
  152.   Procedure WWriteHex(                 Len       : BYTE;
  153.                                        FC        : INTEGER;
  154.                                        BC        : INTEGER;
  155.                                        Num       : LONGINT  );
  156.  
  157.   Procedure WWriteTxtMask(             Mask      : STRING;
  158.                                        Fill      : CHAR;
  159.                                        LJust     : BOOLEAN;
  160.                                        FC        : INTEGER;
  161.                                        BC        : INTEGER;
  162.                                        Txt       : STRING   );
  163.  
  164.   Procedure WWriteNumMask(             Mask      : STRING;
  165.                                        FC        : INTEGER;
  166.                                        BC        : INTEGER;
  167.                                        Num       : LONGINT  );
  168.  
  169.   Procedure WWriteFloat(               Float     : REAL;
  170.                                        Width     : INTEGER;
  171.                                        Decimal   : INTEGER;
  172.                                        FC        : INTEGER;
  173.                                        BC        : INTEGER  );
  174.  
  175.   Procedure WWriteDateMask(            FC        : INTEGER;
  176.                                        BC        : INTEGER;
  177.                                        Date      : LONGINT  );
  178.  
  179.   Function  WReadTxt(                  MaxLen    : INTEGER;
  180.                                        FC        : BYTE;
  181.                                        BC        : BYTE;
  182.                                        InText    : STRING   ) : STRING;
  183.  
  184.   Function  WReadNum(                  MaxLen    : INTEGER;
  185.                                        FC        : BYTE;
  186.                                        BC        : BYTE;
  187.                                        InNum     : LONGINT  ) : LONGINT;
  188.  
  189.  
  190.   Procedure WWriteOpt(     CurOpt        : integer;
  191.                            thelist       : PMenuMax;
  192.                            fc            : byte;
  193.                            bc            : BYTE          );
  194.  
  195.  
  196.  
  197.   Procedure WReadOpt(              var CurOpt    : INTEGER;
  198.                                    var TheList;
  199.                                        NumOpts   : INTEGER;
  200.                                        FC        : BYTE;
  201.                                        BC        : BYTE     );
  202.  
  203.   Function  WReadHex(                  Bites     : INTEGER;
  204.                                        FC        : INTEGER;
  205.                                        BC        : INTEGER;
  206.                                        InHex     : LONGINT  ) : LONGINT;
  207.  
  208.   Function  WReadTxtMask(              Mask      : STRING;
  209.                                        Keys      : STRING;
  210.                                        Fill      : CHAR;
  211.                                        LJust     : BOOLEAN;
  212.                                        FC        : INTEGER;
  213.                                        BC        : INTEGER;
  214.                                        InText    : STRING   ) : STRING;
  215.  
  216.   Function  WReadNumMask(              Mask      : STRING;
  217.                                        FC        : INTEGER;
  218.                                        BC        : INTEGER;
  219.                                        InNum     : LONGINT  ) : LONGINT;
  220.  
  221.  
  222.   Function  WReadFloat(                Width     : INTEGER;
  223.                                        Decimal   : INTEGER;
  224.                                        FC        : INTEGER;
  225.                                        BC        : INTEGER;
  226.                                        InFloat   : REAL     ) : REAL;
  227.  
  228.   Function  WReadDateMask(             FC        : INTEGER;
  229.                                        BC        : INTEGER;
  230.                                        InDate    : LONGINT  ) : LONGINT;
  231.  
  232.   Function  WGemDialogBox(             S         : STRING   ) : INTEGER;
  233.  
  234.   Procedure WCWrite(                   S         : ST80     );
  235.  
  236.   Procedure WCWriteLn(                 S         : ST80     );
  237.  
  238.   Procedure WLineMsg(                  S         : STRING;
  239.                                        FC        : BYTE;
  240.                                        BC        : BYTE;
  241.                                        Y         : BYTE;
  242.                                    var B         : TButtonList4;
  243.                                    var Count     : BYTE     );
  244.  
  245.   Procedure WPrgNameMsg(               S         : STRING;
  246.                                        FC        : BYTE;
  247.                                        BC        : BYTE     );
  248.  
  249.   Procedure WMessage(                  S         : STRING;
  250.                                        FC        : BYTE;
  251.                                        BC        : BYTE     );
  252.  
  253.   Procedure WInfoMsg(                  S         : STRING;
  254.                                        FC        : BYTE;
  255.                                        BC        : BYTE     );
  256.  
  257.   Procedure WPrompt(                   S         : ST80;
  258.                                        FC        : BYTE;
  259.                                        BC        : BYTE     );
  260.  
  261.   Procedure WGemMsgBox(                S         : STRING   );
  262.  
  263.  
  264.  
  265.   Procedure WClose;
  266.  
  267.   Procedure WHelpKeyProc(              Status    : BYTE;
  268.                                        Key1      : CHAR;
  269.                                        Key2      : CHAR     );
  270.  
  271.   Procedure WControlKeyProc(           Status    : BYTE;
  272.                                        Key1      : CHAR;
  273.                                        Key2      : CHAR     );
  274.  
  275.   Function  WAutoMenu(                 Menu       : PMenuMax;
  276.                                        NumChoices : INTEGER;
  277.                                        Cols       : INTEGER;
  278.                                        Rows       : INTEGER;
  279.                                        Keys       : ST80;
  280.                                        X          : INTEGER;
  281.                                        Y          : INTEGER;
  282.                                        FC         : INTEGER;
  283.                                        BC         : INTEGER;
  284.                                        BoxFC      : INTEGER;
  285.                                        BoxBC      : INTEGER;
  286.                                        Name       : ST80;
  287.                                    var FrameStart : WORD    ) : INTEGER;
  288.  
  289.   Function  WAutoMenu_Kill(            Menu       : PMenuMax;
  290.                                        NumChoices : INTEGER;
  291.                                        Cols       : INTEGER;
  292.                                        Rows       : INTEGER;
  293.                                        Keys       : ST80;
  294.                                        X          : INTEGER;
  295.                                        Y          : INTEGER;
  296.                                        FC         : INTEGER;
  297.                                        BC         : INTEGER;
  298.                                        BoxFC      : INTEGER;
  299.                                        BoxBC      : INTEGER;
  300.                                        Name       : ST80;
  301.                                    var FrameStart : WORD    ) : INTEGER;
  302.  
  303.   Procedure WView(                     P         : Pointer;
  304.                                        BufWid    : INTEGER;
  305.                                        BufLen    : INTEGER;
  306.                                        Wid       : INTEGER;
  307.                                        Len       : INTEGER  );
  308.  
  309.   Procedure WDrawButton(               Btype     : INTEGER;
  310.                                        X         : INTEGER;
  311.                                        Y         : INTEGER;
  312.                                        FC        : INTEGER;
  313.                                        BC        : INTEGER;
  314.                                        Text      : STRING   );
  315.  
  316.   Procedure WBlinkButton(              BType      : BYTE;
  317.                                        X          : BYTE;
  318.                                        Y          : BYTE;
  319.                                        FC1        : BYTE;
  320.                                        BC1        : BYTE;
  321.                                        FC2        : BYTE;
  322.                                        BC2        : BYTE;
  323.                                        Delay1     : WORD;
  324.                                        Delay2     : WORD;
  325.                                        BlinkCount : BYTE;
  326.                                        S          : ST80    );
  327.  
  328.   Procedure WDrawButtonList(           BList     : PButtonList;
  329.                                        Count     : BYTE     );
  330.  
  331.   Procedure WMakeBRec(             var BRec      : TButton;
  332.                                        BType     : BYTE;
  333.                                        X         : BYTE;
  334.                                        Y         : BYTE;
  335.                                        FC        : INTEGER;
  336.                                        BC        : INTEGER;
  337.                                        Text      : STRING   );
  338.  
  339.   Procedure WDrawIcon(                 DType     : BYTE;
  340.                                        X         : BYTE;
  341.                                        Y         : BYTE;
  342.                                        FC        : INTEGER;
  343.                                        BC        : INTEGER  );
  344.  
  345.   Function  WDoDialogBox(              X         : BYTE;
  346.                                        Y         : BYTE;
  347.                                        WB        : BYTE;
  348.                                        ICF       : BYTE;
  349.                                        TF        : BYTE;
  350.                                        NBF       : BYTE;
  351.                                        NBB       : BYTE;
  352.                                        HBF       : BYTE;
  353.                                        HBB       : BYTE;
  354.                                        BType     : BYTE;
  355.                                        HBType    : BYTE;
  356.                                        Txt       : STRING   ) : INTEGER;
  357.  
  358.   Function  WGetIconWidth(             DType     : BYTE     ) : BYTE;
  359.  
  360.   Function  WSR(                       Master      : STRING;
  361.                                        LookFor     : STRING;
  362.                                        ReplaceWith : STRING ) : STRING;
  363.  
  364.   Procedure WSubmitHelpProc(           Proc      : POINTER  );
  365.  
  366.   Procedure WSubmitDefKeys;
  367.  
  368.   Procedure WBarAmountDone(            Todo      : LONGINT;
  369.                                        Done      : LONGINT;
  370.                                        ChA       : CHAR;
  371.                                        ChB       : CHAR;
  372.                                        DoneFC    : BYTE;
  373.                                        DoneBC    : BYTE;
  374.                                        NotDoneFC : BYTE;
  375.                                        NotDoneBC : BYTE;
  376.                                        BarW      : BYTE     );
  377.  
  378.   Function  WGetLastOPROTsrPtr : Pointer;
  379.  
  380.   Procedure WWRiteXBoxRadioB(          X          : INTEGER;
  381.                                        Y          : INTEGER;
  382.                                        FC         : INTEGER;
  383.                                        BC         : INTEGER;
  384.                                        CurSetting : BOOLEAN;
  385.                                        ZType      : BYTE    );
  386.  
  387.   Function  WReadXBox(                 X          : INTEGER;
  388.                                        Y          : INTEGER;
  389.                                        FC         : INTEGER;
  390.                                        BC         : INTEGER;
  391.                                        CurSetting : BOOLEAN ) : BOOLEAN;
  392.  
  393.   Function  WReadRadioB(               X          : INTEGER;
  394.                                        Y          : INTEGER;
  395.                                        FC         : INTEGER;
  396.                                        BC         : INTEGER;
  397.                                        CurSetting : BOOLEAN ) : BOOLEAN;
  398.  
  399.   Procedure WTurnHelpOnOff(            TurnHelpOn : BOOLEAN );
  400.  
  401. (*
  402.   Procedure WSubmitKeyProc(            Key1      : CHAR;
  403.                                        Key2      : CHAR;
  404.                                        P         : POINTER;
  405.                                        Name      : STRING   );
  406.  
  407.   Procedure WRemoveKeyProc(            Name      : STRING   );
  408. *)
  409.  
  410.   Procedure WHorizLine(                Y         : INTEGER;
  411.                                        LType     : INTEGER  );
  412.  
  413.   Procedure WVertLine(                 X         : INTEGER;
  414.                                        LType     : INTEGER  );
  415.  
  416.   Procedure WOldHelp;
  417.  
  418.   {------------------------------}
  419.   { Begin implementation of code }
  420.   {------------------------------}
  421.  
  422.  
  423. ──────────────────────────────────────────────────────────────────────────────
  424.  
  425.  
  426. [FUNCTION]
  427.  
  428. Procedure WTopLeftKeyProc(   Status    : BYTE;
  429.                              Key1      : CHAR;
  430.                              Key2      : CHAR    ); Far;
  431.  
  432. [PARAMETERS]
  433.  
  434. Status
  435. Key1
  436. Key2
  437.  
  438. [RETURNS]
  439.  
  440. (None)
  441.  
  442. [DESCRIPTION]
  443.  
  444. ****** THIS FUNCTION NOT IMPLEMENTED! ******
  445.  
  446. [SEE-ALSO]
  447.  
  448. [EXAMPLE]
  449.  
  450.  
  451. ──────────────────────────────────────────────────────────────────────────────
  452.  
  453.  
  454. [FUNCTION]
  455.  
  456. Function  WReadKey                                          : CHAR;
  457.  
  458. [PARAMETERS]
  459.  
  460. (None)
  461.  
  462. [RETURNS]
  463.  
  464. Character Read from any Input
  465.  
  466. [DESCRIPTION]
  467.  
  468. This function Reads the First Character in the Window-Lib's Keyboard
  469. Buffer.  This Buffer is filled from any user input (Keyboard, Mouse, etc).
  470. If nothing is in the Buffer, it waits for something before continuing.
  471.  
  472. This is basically like a Std Pascal "ReadKey" except that the source is
  473. the Buffer.
  474.  
  475. Pre-Padding this buffer with Keystrokes or Mouse Entries allows the program
  476. to continue automatically as if the User entered the data himself.  This
  477. feature can be very useful to automate or quickly get around the Window's
  478. System and Application.
  479.  
  480. [SEE-ALSO]
  481.  
  482. [EXAMPLE]
  483.  
  484. VAR
  485.   ch : CHAR;
  486.  
  487. BEGIN
  488.  
  489.   WriteLn( 'Enter any Keystroke / Mouse Button' );
  490.   WriteLn( 'Press ESC to Quit.' );
  491.   WriteLn;
  492.  
  493.   REPEAT
  494.  
  495.     ch := WReadKey;
  496.     WriteLn( 'ch = ',ByteToHex(Ord(ch)),'h ''Ord(ch):3,'d = ',ch );
  497.  
  498.   UNTIL ch = #27;
  499.  
  500. END;
  501.  
  502.  
  503. ──────────────────────────────────────────────────────────────────────────────
  504.  
  505.  
  506. [FUNCTION]
  507.  
  508. Procedure WClose;
  509.  
  510. [PARAMETERS]
  511.  
  512. (None)
  513.  
  514. [RETURNS]
  515.  
  516. (None)
  517.  
  518. [DESCRIPTION]
  519.  
  520. This closes all Existing Windows and Shuts Down the Window System.
  521. The Program is now Ready to Exit Cleanly.
  522.  
  523. [SEE-ALSO]
  524.  
  525. WOpen
  526.  
  527. [EXAMPLE]
  528.  
  529.  
  530. ──────────────────────────────────────────────────────────────────────────────
  531.  
  532.  
  533. [FUNCTION]
  534.  
  535. [PARAMETERS]
  536.  
  537. [RETURNS]
  538.  
  539. [DESCRIPTION]
  540.  
  541. [SEE-ALSO]
  542.  
  543. [EXAMPLE]
  544.  
  545.  
  546. ──────────────────────────────────────────────────────────────────────────────
  547.  
  548.  
  549. [FUNCTION]
  550.  
  551. Procedure WDrawMenu(                 Menu       : PMenuMax;
  552.                                      NumChoices : INTEGER;
  553.                                      Cols       : INTEGER;
  554.                                      Rows       : INTEGER;
  555.                                      Keys       : ST80    );
  556.  
  557. [PARAMETERS]
  558.  
  559. Menu        Pointer to Menu Data
  560. NumChoices  Number of Items in Menu
  561. Cols        Number of Columns to display Menu with
  562. Rows        Number of Rows to display Menu with
  563. Keys        Hot-Key list, if any (1st char=1st item,2nd char=2nd item,...)
  564.  
  565. [RETURNS]
  566.  
  567. (None)
  568.  
  569. [DESCRIPTION]
  570.  
  571. Takes all the information provided and displays the menu as it would
  572. look described by the input information.  This routine Requires that
  573. it's display output window already Exists, as it will not Create one.
  574.  
  575. [SEE-ALSO]
  576.  
  577. WDrawMenu
  578. WMenu
  579. WMenuB
  580. WAutoMenu
  581. WAutoMenu_Kill
  582. WView
  583.  
  584. [EXAMPLE]
  585.  
  586.  
  587. ──────────────────────────────────────────────────────────────────────────────
  588.  
  589.  
  590. [FUNCTION]
  591.  
  592. Procedure WMenu(                     Menu       : PMenuMax;
  593.                                      NumChoices : INTEGER;
  594.                                      Cols       : INTEGER;
  595.                                      Rows       : INTEGER;
  596.                                      Keys       : ST80;
  597.                              var Choice     : INTEGER );
  598.  
  599. [PARAMETERS]
  600.  
  601. Menu        Pointer to Menu Data
  602. NumChoices  Number of Items in Menu
  603. Cols        Number of Columns to display Menu with
  604. Rows        Number of Rows to display Menu with
  605. Keys        Hot-Key list, if any (1st char=1st item,2nd char=2nd item,...)
  606. Choice      VAR Returned Selected Menu Item
  607.  
  608. [RETURNS]
  609.  
  610. (None)
  611.  
  612. [DESCRIPTION]
  613.  
  614. Creates and displays Menu based upon the provided information.  Allows
  615. the user to then scroll thru the Menu until a selection is made or
  616. ESC is pressed.  If ESC pressed then Choice returns as -1 otherwise
  617. Choice number represents the selected Item in the Menu List.
  618. This Procedure is a Low-Level Menu routine and is generally used as
  619. a tool in building more powerful Menuing routines.  This routine Requires
  620. that it's display output window already Exists, as it will not Create
  621. one.
  622.  
  623. [SEE-ALSO]
  624.  
  625. WDrawMenu
  626. WMenu
  627. WMenuB
  628. WAutoMenu
  629. WAutoMenu_Kill
  630. WView
  631.  
  632. [EXAMPLE]
  633.  
  634.  
  635. ──────────────────────────────────────────────────────────────────────────────
  636.  
  637.  
  638. [FUNCTION]
  639.  
  640. Procedure WDrawMenuB(        Menu       : PMenuMax;
  641.                              NumChoices : INTEGER;
  642.                              Cols       : INTEGER;
  643.                              Rows       : INTEGER;
  644.                              Keys       : ST80;
  645.                              FrameStart : INTEGER;
  646.                              Choice     : integer  );
  647.  
  648. [PARAMETERS]
  649.  
  650. Menu        Pointer to Menu Data
  651. NumChoices  Number of Items in Menu
  652. Cols        Number of Columns to display Menu with
  653. Rows        Number of Rows to display Menu with
  654. Keys        Hot-Key list, if any (1st char=1st item,2nd char=2nd item,...)
  655. FrameStart  Start of the displayed frame within the scrollable menu
  656. Choice      Currently select menu item
  657.  
  658. [RETURNS]
  659.  
  660. (None)
  661.  
  662. [DESCRIPTION]
  663.  
  664. Takes all the information provided and displays the menu as it would
  665. look described by the input information.  This routine Requires that
  666. it's display output window already Exists, as it will not Create one.
  667.  
  668. [SEE-ALSO]
  669.  
  670. WDrawMenu
  671. WMenu
  672. WMenuB
  673. WAutoMenu
  674. WAutoMenu_Kill
  675. WView
  676.  
  677. [EXAMPLE]
  678.  
  679.  
  680. ──────────────────────────────────────────────────────────────────────────────
  681.  
  682.  
  683. [FUNCTION]
  684.  
  685. Procedure WMenuB(                    Menu       : PMenuMax;
  686.                                      NumChoices : INTEGER;
  687.                                      Cols       : INTEGER;
  688.                                      Rows       : INTEGER;
  689.                                      Keys       : ST80;
  690.                                  var FrameStart : INTEGER;
  691.                              var Choice     : INTEGER );
  692.  
  693. [PARAMETERS]
  694.  
  695. Menu        Pointer to Menu Data
  696. NumChoices  Number of Items in Menu
  697. Cols        Number of Colums to display Menu with
  698. Rows        Number of Rows to display Menu with
  699. Keys        Hot-Key list, if any (1st char=1st item, 2nd char=2nd item,...)
  700. FrameStart  VAR Item Number of 1st item visible in Menu Scrolling window
  701. Choice      VAR Returned Selected Menu Item
  702.  
  703. [RETURNS]
  704.  
  705. (None)
  706.  
  707. [DESCRIPTION]
  708.  
  709. Creates and displays Menu based upon the provided information with
  710. the FrameStart Item being the top Item in the Scrolling Menu.  Allows
  711. the user to then scroll thru the Menu until a selection is made or ESC
  712. is pressed.  If ESC is pressed, then Choice returns as -1 otherwise
  713. Choice number represents the current selected Item in the Menu List.
  714. This Procedure is a Low-Level Menu routine and is generally used as a
  715. tool in building more powerful Menuing routines.  Primary advantage is
  716. that it allows for jumping into and out of the Menu with a new Menu
  717. Starting position.  This routine Requires that it's display output
  718. window already Exists, as it will not Create one.
  719.  
  720. [SEE-ALSO]
  721.  
  722. WDrawMenu
  723. WMenu
  724. WMenuB
  725. WAutoMenu
  726. WAutoMenu_Kill
  727. WView
  728.  
  729. [EXAMPLE]
  730.  
  731.  
  732. ──────────────────────────────────────────────────────────────────────────────
  733.  
  734.  
  735. [FUNCTION]
  736.  
  737. Function  WAutoMenu(                 Menu       : PMenuMax;
  738.                                      NumChoices : INTEGER;
  739.                                      Cols       : INTEGER;
  740.                                      Rows       : INTEGER;
  741.                                      Keys       : ST80;
  742.                                      X          : INTEGER;
  743.                                      Y          : INTEGER;
  744.                                      FC         : INTEGER;
  745.                                      BC         : INTEGER;
  746.                                      BoxFC      : INTEGER;
  747.                                      BoxBC      : INTEGER;
  748.                                      Name       : ST80;
  749.                                  var FrameStart : WORD    ) : INTEGER;
  750.  
  751. [PARAMETERS]
  752.  
  753. Menu        Pointer to Menu Data
  754. NumChoices  Number of Items in Menu
  755. Cols        Number of Colums to display Menu with
  756. Rows        Number of Rows to display Menu with
  757. Keys        Hot-Key list, if any (1st char=1st item, 2nd char=2nd item,...)
  758. X           Left Screen Coordinate for Menu Window
  759. Y           Upper Screen Coordinate for Menu Window
  760. FC          Foreground Color for Menu Window
  761. BC          Background Color for Menu Window
  762. BoxFC       Foreground Color for Menu Window Border Box
  763. BoxBC       Background Color for Menu Window Border Box
  764. Name        Menu Window Name
  765. FrameStart  VAR Item Number of 1st item visible in Menu Scrolling window
  766.  
  767. [RETURNS]
  768.  
  769. Index Number of Selected Menu Item
  770.  
  771. [DESCRIPTION]
  772.  
  773. Creates and displays a Window and Menu using the provided Window
  774. attributes and position.  The Top Item in the Scrolling Menu Window.
  775. Allows the user to then Scroll thru the Menu until a selection is made
  776. or ESC is pressed.  If ESC is pressed, then the function returns -1,
  777. otherwise the function returns the number representing the current
  778. selected Item in the Menu List.  This Procedure is a High-Level Menu
  779. Routine that takes care of handling the Window, Sizing, User Selection,
  780. and Returning that result to the caller.  After a User selection has
  781. been made, this routine does NOT remove the Menu Window, but requires
  782. the caller to remove it when he is through with this Menu Window.  This
  783. allows the Programmer to created Layered or Cascading Menus representing
  784. the chain of the User's Selections.  Removal of the Menu Window is done
  785. by calling WDispose() and proving the Menu Window Name.
  786.  
  787. [SEE-ALSO]
  788.  
  789. WDrawMenu
  790. WMenu
  791. WMenuB
  792. WAutoMenu
  793. WAutoMenu_Kill
  794. WView
  795.  
  796. [EXAMPLE]
  797.  
  798.  
  799. ──────────────────────────────────────────────────────────────────────────────
  800.  
  801.  
  802. [FUNCTION]
  803.  
  804. Function  WAutoMenu_Kill(            Menu       : PMenuMax;
  805.                                      NumChoices : INTEGER;
  806.                                      Cols       : INTEGER;
  807.                                      Rows       : INTEGER;
  808.                                      Keys       : ST80;
  809.                                      X          : INTEGER;
  810.                                      Y          : INTEGER;
  811.                                      FC         : INTEGER;
  812.                                      BC         : INTEGER;
  813.                                      BoxFC      : INTEGER;
  814.                                      BoxBC      : INTEGER;
  815.                                      Name       : ST80;
  816.                                  var FrameStart : WORD    ) : INTEGER;
  817.  
  818. [PARAMETERS]
  819.  
  820. Menu        Pointer to Menu Data
  821. NumChoices  Number of Items in Menu
  822. Cols        Number of Colums to display Menu with
  823. Rows        Number of Rows to display Menu with
  824. Keys        Hot-Key list, if any (1st char=1st item, 2nd char=2nd item,...)
  825. X           Left Screen Coordinate for Menu Window
  826. Y           Upper Screen Coordinate for Menu Window
  827. FC          Foreground Color for Menu Window
  828. BC          Background Color for Menu Window
  829. BoxFC       Foreground Color for Menu Window Border Box
  830. BoxBC       Background Color for Menu Window Border Box
  831. Name        Menu Window Name
  832. FrameStart  VAR Item Number of 1st item visible in Menu Scrolling window
  833.  
  834. [RETURNS]
  835.  
  836. Index Number of Selected Menu Item
  837.  
  838. [DESCRIPTION]
  839.  
  840. Creates and displays a Window and Menu using the provided Window
  841. attributes and position.  The Top Item in the Scrolling Menu Window.
  842. Allows the user to then Scroll thru the Menu until a selection is made
  843. or ESC is pressed.  If ESC is pressed, then the function returns -1,
  844. otherwise the function returns the number representing the current
  845. selected Item in the Menu List.  This Procedure is a High-Level Menu
  846. Routine that takes care of handling the Window, Sizing, User Selection,
  847. and Returning that result to the caller.  After a User selection has
  848. been made, this routine removes the Menu Window it created and returns
  849. the display to what it was prior to the call.
  850.  
  851. [SEE-ALSO]
  852.  
  853. WDrawMenu
  854. WMenu
  855. WMenuB
  856. WAutoMenu
  857. WAutoMenu_Kill
  858. WView
  859.  
  860. [EXAMPLE]
  861.  
  862.  
  863. ──────────────────────────────────────────────────────────────────────────────
  864.  
  865.  
  866. [FUNCTION]
  867.  
  868. Procedure WDrawIcon(                 DType     : BYTE;
  869.                                      X         : BYTE;
  870.                                      Y         : BYTE;
  871.                                      FC        : INTEGER;
  872.                                      BC        : INTEGER  );
  873.  
  874. [PARAMETERS]
  875.  
  876. DType       Icon Type Number
  877. X           X Window Coordinate
  878. Y           Y Window Coordinate
  879. FC          Foreground Icon Color
  880. BC          Background Icon Color
  881.  
  882. [RETURNS]
  883.  
  884. (None)
  885.  
  886. [DESCRIPTION]
  887.  
  888. This routine Displays and Icon based upon the provided Icon Information.
  889. Icon Types are as follows:
  890.  
  891.   Icon #1 = "  █ "           Icon #2 = " ▄▀▀▀▄ "
  892.             "  █ "                     "    ▄▀ "
  893.             "  █ "                     "   █   "
  894.             "  ▄ "                     "   ▄   "
  895.             "  ▀ "                     "       "
  896.  
  897.   Icon #3 = "   ▄▄           Icon #4 = "   ▄▄▄   "
  898.             " ▄▀    ▀▄ "               " ▄▀   ▀▄ "
  899.             " █ STOP █ "               " █ RIP █ "
  900.             " ▀▄    ▄▀ "               " █     █ "
  901.             "   ▀▀▀▀   "               " ▀     ▀ "
  902.  
  903.   Icon #5 = " ─────── "      Icon #6 = "          "
  904.             " ▀▀▀▀▀▀▀ "                " Visionix "
  905.             " ███████ "                " ░░▒▒▒▓▓▓ "
  906.             " C  D  P "                "          "
  907.             "         "                "          "
  908.  
  909. [SEE-ALSO]
  910.  
  911. WGemDialogBox
  912. WGemMsgBox
  913. WDrawIcon
  914. WDoDialogBox
  915. WGetIconWidth
  916.  
  917. [EXAMPLE]
  918.  
  919.  
  920. ──────────────────────────────────────────────────────────────────────────────
  921.  
  922.  
  923. [FUNCTION]
  924.  
  925. Function  WGetIconWidth(             DType     : BYTE     ) : BYTE;
  926.  
  927. [PARAMETERS]
  928.  
  929. DType       Icon Type Number
  930.  
  931. [RETURNS]
  932.  
  933. Width of that Icon Type
  934.  
  935. [DESCRIPTION]
  936.  
  937. This function Returns the character width of the selected Icon Type.
  938.  
  939. [SEE-ALSO]
  940.  
  941. WGemDialogBox
  942. WGemMsgBox
  943. WDrawIcon
  944. WDoDialogBox
  945. WGetIconWidth
  946.  
  947. [EXAMPLE]
  948.  
  949.  
  950. ──────────────────────────────────────────────────────────────────────────────
  951.  
  952.  
  953. [FUNCTION]
  954.  
  955. Function  WSR(                       Master      : STRING;
  956.                                      LookFor     : STRING;
  957.                                      ReplaceWith : STRING ) : STRING;
  958.  
  959. [PARAMETERS]
  960.  
  961. Master      Source String to Modify
  962. LookFor     Sub-String to Look For
  963. ReplaceWith Sub-String to Replace with Found Sub-String
  964.  
  965. [RETURNS]
  966.  
  967. Modified Source String
  968.  
  969. [DESCRIPTION]
  970.  
  971. This routine searches for all instance of the LookFor Sub-String in the
  972. Master String and replaces them with the ReplaceWith Sub-Strings.
  973. Returns this modified String result.
  974.  
  975. [SEE-ALSO]
  976.  
  977. [EXAMPLE]
  978.  
  979.  
  980. ──────────────────────────────────────────────────────────────────────────────
  981.  
  982.  
  983. [FUNCTION]
  984.  
  985. Function  WDoDialogBox(              X         : BYTE;
  986.                                      Y         : BYTE;
  987.                                      WB        : BYTE;
  988.                                      ICF       : BYTE;
  989.                                      TF        : BYTE;
  990.                                      NBF       : BYTE;
  991.                                      NBB       : BYTE;
  992.                                      HBF       : BYTE;
  993.                                      HBB       : BYTE;
  994.                                      BType     : BYTE;
  995.                                      HBType    : BYTE;
  996.                                      Txt       : STRING   ) : INTEGER;
  997.  
  998. [PARAMETERS]
  999.  
  1000. X           X Screen Coordinate
  1001. Y           Y Screen Coordinate
  1002. WB          Dialog Window Background Color
  1003. ICF         Icon Foreground Color
  1004. TF          Dialog Text Foreground Color
  1005. NBF         Normal Button Foreground Color
  1006. NBB         Normal Button Background Color
  1007. HBF         Highlighted Button Foreground Color
  1008. HBB         Highlighted Button Background Color
  1009. BType       Normal Button Type Number
  1010. HBType      Highlighted Button Type Number
  1011. Txt         Button Text
  1012.  
  1013. [RETURNS]
  1014.  
  1015. The User-Selected Dialog Button number
  1016.  
  1017. [DESCRIPTION]
  1018.  
  1019. This is a Low-Level Dialog Box Routine which simply takes all the
  1020. provided Dialog Data, creates a Dialog Box, and returns the User
  1021. Selected Button Number.  Here each parameter is expressed in great
  1022. detail describing exactly how the Dialog Box should look, it's
  1023. position, the Button Types, and the Dialog Text itself.  This is all
  1024. processed at this level as well as the Handling of the User input to
  1025. return the User's Button Selection.
  1026.  
  1027. [SEE-ALSO]
  1028.  
  1029. WGemDialogBox
  1030. WGemMsgBox
  1031. WDrawIcon
  1032. WDoDialogBox
  1033. WGetIconWidth
  1034.  
  1035. [EXAMPLE]
  1036.  
  1037.  
  1038. ──────────────────────────────────────────────────────────────────────────────
  1039.  
  1040.  
  1041. [FUNCTION]
  1042.  
  1043. Procedure WSubmitDefKeys;
  1044.  
  1045. [PARAMETERS]
  1046.  
  1047. (None)
  1048.  
  1049. [RETURNS]
  1050.  
  1051. (None)
  1052.  
  1053. [DESCRIPTION]
  1054.  
  1055. Submits the Default Windows Keys to the Multi-Tasker.  These are
  1056. F1 to Help Functions, F9 for the Control Panel, F7 is commonly
  1057. used as a DOS Shell, but is left to the Programmer.
  1058.  
  1059. [SEE-ALSO]
  1060.  
  1061. WHelpKeyProc
  1062. WControlKeyProc
  1063. WSubmitHelpProc
  1064. WSubmitDefKeys
  1065.  
  1066. [EXAMPLE]
  1067.  
  1068.  
  1069. ──────────────────────────────────────────────────────────────────────────────
  1070.  
  1071.  
  1072. [FUNCTION]
  1073.  
  1074. Procedure WSubmitHelpProc(           Proc      : POINTER  );
  1075.  
  1076. [PARAMETERS]
  1077.  
  1078. Proc        Far Pointer to Submitted Help Procedure
  1079.  
  1080. [RETURNS]
  1081.  
  1082. (None)
  1083.  
  1084. [DESCRIPTION]
  1085.  
  1086. This routine allows the caller to provide his own Help System for use
  1087. by the Window Library.  He simply submits a pointer to his Help Procedure
  1088. (as a FAR Pointer) and any time a request is made to the Help System,
  1089. this submitted procedure will be called.
  1090.  
  1091. [SEE-ALSO]
  1092.  
  1093. WHelpKeyProc
  1094. WControlKeyProc
  1095. WSubmitHelpProc
  1096. WSubmitDefKeys
  1097.  
  1098. [EXAMPLE]
  1099.  
  1100.  
  1101. ──────────────────────────────────────────────────────────────────────────────
  1102.  
  1103.  
  1104. [FUNCTION]
  1105.  
  1106. Procedure WTurnHelpOnOff(    TurnHelpOn : BOOLEAN );
  1107.  
  1108. [PARAMETERS]
  1109.  
  1110. TurnHelpOn  Enable Help Procedure?
  1111.  
  1112. [RETURNS]
  1113.  
  1114. (None)
  1115.  
  1116. [DESCRIPTION]
  1117.  
  1118. Enables or Disables the Help Procedure Call (F1).
  1119.  
  1120. [SEE-ALSO]
  1121.  
  1122. [EXAMPLE]
  1123.  
  1124.  
  1125. ──────────────────────────────────────────────────────────────────────────────
  1126.  
  1127.  
  1128. [FUNCTION]
  1129.  
  1130. Procedure WBarAmountDone(            Todo      : LONGINT;
  1131.                                      Done      : LONGINT;
  1132.                                      ChA       : CHAR;
  1133.                                      ChB       : CHAR;
  1134.                                      DoneFC    : BYTE;
  1135.                                      DoneBC    : BYTE;
  1136.                                      NotDoneFC : BYTE;
  1137.                                      NotDoneBC : BYTE;
  1138.                                      BarW      : BYTE     );
  1139.  
  1140. [PARAMETERS]
  1141.  
  1142. Todo        Total Value of Item
  1143. Done        Value Completed of Item
  1144. ChA         Character Representing Not Done Portion of Bar
  1145. ChB         Character Representing Done Portion of Bar
  1146. DoneFC      Foreground Color of Done Bar Portion
  1147. DoneBC      Background Color of Done Bar Portion
  1148. NotDoneFC   Foreground Color of Not Done Bar Portion
  1149. NotDoneBC   Background Color of Not Done Bar Portion
  1150. BarW        Number of Chars in Bar Length
  1151.  
  1152. [RETURNS]
  1153.  
  1154. (None)
  1155.  
  1156. [DESCRIPTION]
  1157.  
  1158. This routine displays a Bar at the Current Cursor position.  The Bar
  1159. indicates visually the amount of a Value is covered by the amount that
  1160. is Done.  The Characters and Colors to represent this in are as provided.
  1161.  
  1162. [SEE-ALSO]
  1163.  
  1164. [EXAMPLE]
  1165.  
  1166.  
  1167. ──────────────────────────────────────────────────────────────────────────────
  1168.  
  1169.  
  1170. [FUNCTION]
  1171.  
  1172. Procedure WWriteXBoxRadioB(          X          : INTEGER;
  1173.                                      Y          : INTEGER;
  1174.                                      FC         : INTEGER;
  1175.                                      BC         : INTEGER;
  1176.                                      CurSetting : BOOLEAN;
  1177.                                      ZType      : BYTE    );
  1178.  
  1179. [PARAMETERS]
  1180.  
  1181. X           X Window Coordinate
  1182. Y           Y Window Coordinate
  1183. FC          Foreground Check Box Radio Button Color
  1184. BC          Background Check Box Radio Button Color
  1185. CurSetting  Is this Radio Button Already Set?
  1186. ZType       Check Box Radio Button Type
  1187.  
  1188. [RETURNS]
  1189.  
  1190. (None)
  1191.  
  1192. [DESCRIPTION]
  1193.  
  1194. This routine displays a Check Box Radio Button at the using the
  1195. provided Color and Position data.  If the Setting is already set,
  1196. then the Radio Button is drawn as set.  Check Box Radio Button Types
  1197. are as follows:
  1198.  
  1199. [SEE-ALSO]
  1200.  
  1201. WWriteTxt
  1202. WWriteNum
  1203. WWriteHex
  1204. WWriteTxtMask
  1205. WWriteNumMask
  1206. WWriteFloat
  1207. WWriteDateMask
  1208.  
  1209. [EXAMPLE]
  1210.  
  1211.  
  1212. ──────────────────────────────────────────────────────────────────────────────
  1213.  
  1214.  
  1215. [FUNCTION]
  1216.  
  1217. Function DoRead_Xbox_RadioB( X          : INTEGER;
  1218.                              Y          : INTEGER;
  1219.                              FC         : INTEGER;
  1220.                              BC         : INTEGER;
  1221.                              CurSetting : BOOLEAN;
  1222.                              ZType      : BYTE     ) : BOOLEAN;
  1223.  
  1224. [PARAMETERS]
  1225.  
  1226. X           Check Box X Coordinate
  1227. Y           Check Box Y Coordinate
  1228. FC          Foreground Color
  1229. BC          Background Color
  1230. CurSetting  Current Setting (TRUE=Set, FALSE=Not Set)
  1231. ZType       Check Box Type
  1232.  
  1233. [RETURNS]
  1234.  
  1235. Has this Check Box / Radio Button Been Checked?
  1236.  
  1237. [DESCRIPTION]
  1238.  
  1239. This procedure reads a Window Library Check Box / Radio Button.  It is
  1240. mainly used as a Lower-Level routine tothe higher ones used in the
  1241. VForm Unit.
  1242.  
  1243. [SEE-ALSO]
  1244.  
  1245. [EXAMPLE]
  1246.  
  1247.  
  1248. ──────────────────────────────────────────────────────────────────────────────
  1249.  
  1250.  
  1251. [FUNCTION]
  1252.  
  1253. Function  WReadXBox(                 X          : INTEGER;
  1254.                                      Y          : INTEGER;
  1255.                                      FC         : INTEGER;
  1256.                                      BC         : INTEGER;
  1257.                                      CurSetting : BOOLEAN ) : BOOLEAN;
  1258.  
  1259. [PARAMETERS]
  1260.  
  1261. X           X Window Coordinate
  1262. Y           Y Window Coordinate
  1263. FC          Foreground Check Box Radio Button Color
  1264. BC          Background Check Box Radio Button Color
  1265. CurSetting  Is this Check Box Radio Button Already Set?
  1266.  
  1267. [RETURNS]
  1268.  
  1269. The Setting Status of the Radio Button after use.
  1270.  
  1271. [DESCRIPTION]
  1272.  
  1273. This function displays the Check Box Radio Button using the provided
  1274. initial Information.  It then allows the user to modify the Button
  1275. settings and returns the latest Check Box Radio Button Setting.
  1276.  
  1277. [SEE-ALSO]
  1278.  
  1279. WReadTxt
  1280. WReadNum
  1281. WReadOpt
  1282. WReadHex
  1283. WReadTxtMask
  1284. WReadNumMask
  1285. WReadFloat
  1286. WReadDateMask
  1287. WReadXBox
  1288. WReadRadioB
  1289.  
  1290. [EXAMPLE]
  1291.  
  1292.  
  1293. ──────────────────────────────────────────────────────────────────────────────
  1294.  
  1295.  
  1296. [FUNCTION]
  1297.  
  1298. Function  WReadRadioB(               X          : INTEGER;
  1299.                                      Y          : INTEGER;
  1300.                                      FC         : INTEGER;
  1301.                                      BC         : INTEGER;
  1302.                                      CurSetting : BOOLEAN ) : BOOLEAN;
  1303.  
  1304. [PARAMETERS]
  1305.  
  1306. X           X Window Coordinate
  1307. Y           Y Window Coordinate
  1308. FC          Foreground Radio Button Color
  1309. BC          Background Radio Button Color
  1310. CurSetting  Is this Radio Button Already Set?
  1311.  
  1312. [RETURNS]
  1313.  
  1314. The Setting Stats of the Radio Button after use.
  1315.  
  1316. [DESCRIPTION]
  1317.  
  1318. This function displays the Radio Button using the provided initial
  1319. information.  It then allows the user to modify the Button setting
  1320. and returns the latest Radio Button Setting.
  1321.  
  1322. [SEE-ALSO]
  1323.  
  1324. WReadTxt
  1325. WReadNum
  1326. WReadOpt
  1327. WReadHex
  1328. WReadTxtMask
  1329. WReadNumMask
  1330. WReadFloat
  1331. WReadDateMask
  1332. WReadXBox
  1333. WReadRadioB
  1334.  
  1335. [EXAMPLE]
  1336.  
  1337.  
  1338. ──────────────────────────────────────────────────────────────────────────────
  1339.  
  1340.  
  1341. [FUNCTION]
  1342.  
  1343. Function  WReadTxt(                  MaxLen    : INTEGER;
  1344.                                      FC        : BYTE;
  1345.                                      BC        : BYTE;
  1346.                                      InText    : STRING   ) : STRING;
  1347.  
  1348. [PARAMETERS]
  1349.  
  1350. MaxLen      Width of String Edit Field
  1351. FC          Foreground Color of Edit Field
  1352. BC          Background Color of Edit Field
  1353. InText      Default String to Display and Edit
  1354.  
  1355. [RETURNS]
  1356.  
  1357. The User-Entered Text String
  1358.  
  1359. [DESCRIPTION]
  1360.  
  1361. This routine writes a Text string at the current Cursor position and
  1362. padding the field using the provided Colors.  It then allows the user
  1363. to use the default string or directly enter the desired Text until
  1364. ENTER or ESC is pressed.  If ESC is pressed, then the string returned
  1365. is Char #27, otherwise it is whatever was last in the input field.
  1366.  
  1367. [SEE-ALSO]
  1368.  
  1369. WReadTxt
  1370. WReadNum
  1371. WReadOpt
  1372. WReadHex
  1373. WReadTxtMask
  1374. WReadNumMask
  1375. WReadFloat
  1376. WReadDateMask
  1377. WReadXBox
  1378. WReadRadioB
  1379.  
  1380. [EXAMPLE]
  1381.  
  1382.  
  1383. ──────────────────────────────────────────────────────────────────────────────
  1384.  
  1385.  
  1386. [FUNCTION]
  1387.  
  1388. Procedure WWriteTxt(                 MaxLen    : INTEGER;
  1389.                                      FC        : BYTE;
  1390.                                      BC        : BYTE;
  1391.                                      Txt       : ST80     );
  1392.  
  1393. [PARAMETERS]
  1394.  
  1395. MaxLen      Width of Display Color Field
  1396. FC          Foreground Color for Field
  1397. BC          Background Color for Field
  1398. Txt         String to Display
  1399.  
  1400. [RETURNS]
  1401.  
  1402. (None)
  1403.  
  1404. [DESCRIPTION]
  1405.  
  1406. Writes a string at the current Cursor position using the provided
  1407. Colors, padding the Left Justified Text to the entire width of this
  1408. field with these colors.
  1409.  
  1410. [SEE-ALSO]
  1411.  
  1412. WWriteTxt
  1413. WWriteNum
  1414. WWriteHex
  1415. WWriteTxtMask
  1416. WWriteNumMask
  1417. WWriteFloat
  1418. WWriteDateMask
  1419. WWriteXBoxRadioB
  1420.  
  1421. [EXAMPLE]
  1422.  
  1423.  
  1424. ──────────────────────────────────────────────────────────────────────────────
  1425.  
  1426.  
  1427. [FUNCTION]
  1428.  
  1429. Procedure WWriteNum(                 MaxLen    : INTEGER;
  1430.                                      FC        : BYTE;
  1431.                                      BC        : BYTE;
  1432.                                      Num       : LONGINT  );
  1433.  
  1434. [PARAMETERS]
  1435.  
  1436. MaxLen      Width of Display Color Field
  1437. FC          Foreground Color for Field
  1438. BC          Background Color for Field
  1439. Num         Number to Display
  1440.  
  1441. [RETURNS]
  1442.  
  1443. (None)
  1444.  
  1445. [DESCRIPTION]
  1446.  
  1447. Writes a Number at the current Cursor position using the provided
  1448. Colors, padding the Left Justified Number to the entire width of
  1449. this field with these colors.
  1450.  
  1451. [SEE-ALSO]
  1452.  
  1453. WWriteTxt
  1454. WWriteNum
  1455. WWriteHex
  1456. WWriteTxtMask
  1457. WWriteNumMask
  1458. WWriteFloat
  1459. WWriteDateMask
  1460. WWriteXBoxRadioB
  1461.  
  1462. [EXAMPLE]
  1463.  
  1464.  
  1465. ──────────────────────────────────────────────────────────────────────────────
  1466.  
  1467.  
  1468. [FUNCTION]
  1469.  
  1470. [PARAMETERS]
  1471.  
  1472. [RETURNS]
  1473.  
  1474. [DESCRIPTION]
  1475.  
  1476. [SEE-ALSO]
  1477.  
  1478. [EXAMPLE]
  1479.  
  1480.  
  1481. ──────────────────────────────────────────────────────────────────────────────
  1482.  
  1483.  
  1484. [FUNCTION]
  1485.  
  1486. Procedure WWriteFloat(               Float     : REAL;
  1487.                                      Width     : INTEGER;
  1488.                                      Decimal   : INTEGER;
  1489.                                      FC        : INTEGER;
  1490.                                      BC        : INTEGER  );
  1491.  
  1492. [PARAMETERS]
  1493.  
  1494. Float       Source Floating Point Number to Display
  1495. Width       Total Display Width
  1496. Decimal     Number of Digits below Decimal point.
  1497. FC          Foreground Color for Field
  1498. BC          Background Color for Field
  1499.  
  1500. [RETURNS]
  1501.  
  1502. (None)
  1503.  
  1504. [DESCRIPTION]
  1505.  
  1506. Writes a Floating Point number at the current Cursor position using
  1507. the provided Colors.  If the whole Integer value is Zero, this is
  1508. used preceeding the Decimal point.  All fractional digits are alway
  1509. displayed with either a valid Digit or Zero char.
  1510.  
  1511. [SEE-ALSO]
  1512.  
  1513. WWriteTxt
  1514. WWriteNum
  1515. WWriteHex
  1516. WWriteTxtMask
  1517. WWriteNumMask
  1518. WWriteFloat
  1519. WWriteDateMask
  1520. WWriteXBoxRadioB
  1521.  
  1522. [EXAMPLE]
  1523.  
  1524.  
  1525. ──────────────────────────────────────────────────────────────────────────────
  1526.  
  1527.  
  1528. [FUNCTION]
  1529.  
  1530. [PARAMETERS]
  1531.  
  1532. [RETURNS]
  1533.  
  1534. [DESCRIPTION]
  1535.  
  1536. [SEE-ALSO]
  1537.  
  1538. [EXAMPLE]
  1539.  
  1540.  
  1541. ──────────────────────────────────────────────────────────────────────────────
  1542.  
  1543.  
  1544. [FUNCTION]
  1545.  
  1546. [PARAMETERS]
  1547.  
  1548. [RETURNS]
  1549.  
  1550. [DESCRIPTION]
  1551.  
  1552. [SEE-ALSO]
  1553.  
  1554. [EXAMPLE]
  1555.  
  1556.  
  1557. ──────────────────────────────────────────────────────────────────────────────
  1558.  
  1559.  
  1560. [FUNCTION]
  1561.  
  1562. Procedure WWriteTxtMask(             Mask      : STRING;
  1563.                                      Fill      : CHAR;
  1564.                                      LJust     : BOOLEAN;
  1565.                                      FC        : INTEGER;
  1566.                                      BC        : INTEGER;
  1567.                                      Txt       : STRING   );
  1568.  
  1569. [PARAMETERS]
  1570.  
  1571. Mask        String denoting Display output Format
  1572. Fill        Character to display when none are present for field
  1573. LJust       Is the data displayed Left Justified in Field
  1574. FC          Foreground Color for Field
  1575. BC          Background Color for Field
  1576. Txt         String to Display in the Mask Format
  1577.  
  1578. [RETURNS]
  1579.  
  1580. (None)
  1581.  
  1582. [DESCRIPTION]
  1583.  
  1584. Mask is a string indicating how to display the output String.  Field
  1585. characters of "#" in the Mask represent the use of the next available
  1586. char in the Source String.  All other characters in the Mask will be
  1587. output as they are in Mask.  (IE. Mask="#,##-##/##" Txt"ABCDEFG", the
  1588. output would become "A,BC-DE/FG")  This Mask is read using the Source
  1589. String until the length of Mask has been displayed.  Where the source
  1590. string is shorter than the number of Mask Field Elements, the Fill
  1591. character is used instead.  If LJust is FALSE, then the Fill is in
  1592. front of the Text, otherwise is padded on the End.  Output string
  1593. starts from the current Cursor position.
  1594.  
  1595. [SEE-ALSO]
  1596.  
  1597. WWriteTxt
  1598. WWriteNum
  1599. WWriteHex
  1600. WWriteTxtMask
  1601. WWriteNumMask
  1602. WWriteFloat
  1603. WWriteDateMask
  1604. WWriteXBoxRadioB
  1605.  
  1606. [EXAMPLE]
  1607.  
  1608.  
  1609. ──────────────────────────────────────────────────────────────────────────────
  1610.  
  1611.  
  1612. [FUNCTION]
  1613.  
  1614. Procedure WWriteNumMask(             Mask      : STRING;
  1615.                                      FC        : INTEGER;
  1616.                                      BC        : INTEGER;
  1617.                                      Num       : LONGINT  );
  1618.  
  1619. [PARAMETERS]
  1620.  
  1621. Mask        String denoting Display output Format
  1622. FC          Foreground Color for Field
  1623. BC          Background Color for Field
  1624. Num         Number to Display in the Mask Format
  1625.  
  1626. [RETURNS]
  1627.  
  1628. (None)
  1629.  
  1630. [DESCRIPTION]
  1631.  
  1632. Mask is a string indicating how to display the output Number.  Field
  1633. characters of "#" in the Mask represent the use of the next available
  1634. digit in the Source Number.  All other character in the Mask will
  1635. be output as they are in Mask.  (IE. Mask="#,##-##/##" Num=1234567, the
  1636. output would become "1,23-45/67")  This Mask is read using the Source
  1637. Number until the length of Mask has been displayed.  Where the number
  1638. of digits in the Source Number is less thant the number of Mask Field
  1639. Elements, the character "0" is used (padded in the front of the number).
  1640. Output string starts from the current Cursor position.
  1641.  
  1642. [SEE-ALSO]
  1643.  
  1644. WWriteTxt
  1645. WWriteNum
  1646. WWriteHex
  1647. WWriteTxtMask
  1648. WWriteNumMask
  1649. WWriteFloat
  1650. WWriteDateMask
  1651. WWriteXBoxRadioB
  1652.  
  1653. [EXAMPLE]
  1654.  
  1655.  
  1656. ──────────────────────────────────────────────────────────────────────────────
  1657.  
  1658.  
  1659. [FUNCTION]
  1660.  
  1661. Procedure WWriteDateMask(            FC        : INTEGER;
  1662.                                      BC        : INTEGER;
  1663.                                      Date      : LONGINT  );
  1664.  
  1665. [PARAMETERS]
  1666.  
  1667. FC          Foreground Color for Field
  1668. BC          Background Color for Field
  1669. Date        Date in Coded Decimal Format (IE. 123456=12/34/56)
  1670.  
  1671. [RETURNS]
  1672.  
  1673. (None)
  1674.  
  1675. [DESCRIPTION]
  1676.  
  1677. Displays the Date at the current Cursor position using the provided
  1678. colors.  Date uses a Coded Decimal Format (IE 123091=12/30/91).
  1679.  
  1680. [SEE-ALSO]
  1681.  
  1682. WWriteTxt
  1683. WWriteNum
  1684. WWriteHex
  1685. WWriteTxtMask
  1686. WWriteNumMask
  1687. WWriteFloat
  1688. WWriteDateMask
  1689. WWriteXBoxRadioB
  1690.  
  1691. [EXAMPLE]
  1692.  
  1693.  
  1694. ──────────────────────────────────────────────────────────────────────────────
  1695.  
  1696.  
  1697. [FUNCTION]
  1698.  
  1699. Function  WReadNum(                  MaxLen    : INTEGER;
  1700.                                      FC        : BYTE;
  1701.                                      BC        : BYTE;
  1702.                                      InNum     : LONGINT  ) : LONGINT;
  1703.  
  1704. [PARAMETERS]
  1705.  
  1706. MaxLen      Width of Number Edit Color Field
  1707. FC          Foreground Color for Edit Field
  1708. BC          Background Color for Edit Field
  1709. Num         Default Number to Display and Edit
  1710.  
  1711. [RETURNS]
  1712.  
  1713. The User-Entered Number
  1714.  
  1715. [DESCRIPTION]
  1716.  
  1717. This routine writes a number at the current Cursor position and
  1718. padding the field using the provided Colors.  It then allows the
  1719. user to use the default number or directly enter the desired number
  1720. until ENTER or ESC is pressed.  If ESC is pressed, then the number
  1721. returned is -1, otherwise it is whatever was last in the input field.
  1722.  
  1723. [SEE-ALSO]
  1724.  
  1725. WReadTxt
  1726. WReadNum
  1727. WReadOpt
  1728. WReadHex
  1729. WReadTxtMask
  1730. WReadNumMask
  1731. WReadFloat
  1732. WReadDateMask
  1733. WReadXBox
  1734. WReadRadioB
  1735.  
  1736. [EXAMPLE]
  1737.  
  1738.  
  1739. ──────────────────────────────────────────────────────────────────────────────
  1740.  
  1741.  
  1742. [FUNCTION]
  1743.  
  1744. Procedure WWriteOpt(     CurOpt        : integer;
  1745.                          thelist       : PMenuMax;
  1746.                          fc            : byte;
  1747.                          bc            : BYTE          );
  1748.  
  1749. [PARAMETERS]
  1750.  
  1751. CurOpt
  1752. TheList
  1753. FC
  1754. BC
  1755.  
  1756. [RETURNS]
  1757.  
  1758. (None)
  1759.  
  1760. [DESCRIPTION]
  1761.  
  1762. [SEE-ALSO]
  1763.  
  1764.  
  1765. [EXAMPLE]
  1766.  
  1767.  
  1768. ──────────────────────────────────────────────────────────────────────────────
  1769.  
  1770.  
  1771. [FUNCTION]
  1772.  
  1773. Procedure WReadOpt(              var CurOpt    : INTEGER;
  1774.                                  var TheList;
  1775.                                      NumOpts   : INTEGER;
  1776.                                      FC        : BYTE;
  1777.                                      BC        : BYTE     );
  1778.  
  1779. [PARAMETERS]
  1780.  
  1781. CurOpt      VAR Current/Last Selected Menu Item
  1782. TheList     VAR Pointer to Generic Menu List
  1783. NumOpts     Number of Items in Menu
  1784. FC          Foreground Color for Menu
  1785. BC          Background Color for Menu
  1786.  
  1787. [RETURNS]
  1788.  
  1789. (None)
  1790.  
  1791. [DESCRIPTION]
  1792.  
  1793. This routine displays a Menu field at the current Cursor position
  1794. with the provided Colors.  The user may scroll thru the Menu though
  1795. only a single Item of the Menu is displayed.  However if the user
  1796. pressed the Space Bar, a Drop-Down Menu is displayed at the current
  1797. cursor position with the current Menu Item being at the top.  Depressing
  1798. the Space Bar toggles the Menu to again become a single-line Display.
  1799. This continues until the user has pressed ENTER or ESC.  If ESC is
  1800. pressed, then the number returned as the CurOpt is -1, otherwise it
  1801. is whatever was the last selected Menu Item.
  1802.  
  1803. [SEE-ALSO]
  1804.  
  1805. WReadTxt
  1806. WReadNum
  1807. WReadOpt
  1808. WReadHex
  1809. WReadTxtMask
  1810. WReadNumMask
  1811. WReadFloat
  1812. WReadDateMask
  1813. WReadXBox
  1814. WReadRadioB
  1815.  
  1816. [EXAMPLE]
  1817.  
  1818.  
  1819. ──────────────────────────────────────────────────────────────────────────────
  1820.  
  1821.  
  1822. [FUNCTION]
  1823.  
  1824. Function  WReadHex(                  Bites     : INTEGER;
  1825.                                      FC        : INTEGER;
  1826.                                      BC        : INTEGER;
  1827.                                      InHex     : LONGINT  ) : LONGINT;
  1828.  
  1829. [PARAMETERS]
  1830.  
  1831. Bites       Number of HexBytes of Edit Field
  1832. FC          Foreground Color for Edit Field
  1833. BC          Background Color for Edit Field
  1834. InHex       Default Value to Display (in Hex) and Edit
  1835.  
  1836. [RETURNS]
  1837.  
  1838. The User-Entered Value
  1839.  
  1840. [DESCRIPTION]
  1841.  
  1842. This routine writes a number in Hexadecimal at the current Cursor
  1843. position with the whole field being the provided Colors.  It then
  1844. allows the user to use the default number or directly enter the
  1845. desired number until ENTER or ESC is pressed.  If ESC is pressed,
  1846. then the number returned is 0, otherwise it is whatever was last
  1847. in the input field.
  1848.  
  1849. [SEE-ALSO]
  1850.  
  1851. WReadTxt
  1852. WReadNum
  1853. WReadOpt
  1854. WReadHex
  1855. WReadTxtMask
  1856. WReadNumMask
  1857. WReadFloat
  1858. WReadDateMask
  1859. WReadXBox
  1860. WReadRadioB
  1861.  
  1862. [EXAMPLE]
  1863.  
  1864.  
  1865. ──────────────────────────────────────────────────────────────────────────────
  1866.  
  1867.  
  1868. [FUNCTION]
  1869.  
  1870. Function  WReadTxtMask(              Mask      : STRING;
  1871.                                      Keys      : STRING;
  1872.                                      Fill      : CHAR;
  1873.                                      LJust     : BOOLEAN;
  1874.                                      FC        : INTEGER;
  1875.                                      BC        : INTEGER;
  1876.                                      InText    : STRING   ) : STRING;
  1877.  
  1878. [PARAMETERS]
  1879.  
  1880. Mask        String denoting Display output Format
  1881. Fill        Character to display when none are present for field
  1882. LJust       Is the data displayed Left Justified in Field
  1883. FC          Foreground Color for Field
  1884. BC          Background Color for Field
  1885. InText      Default String to Display and Edit
  1886.  
  1887. [RETURNS]
  1888.  
  1889. The User-Entered Text String
  1890.  
  1891. [DESCRIPTION]
  1892.  
  1893. This routine writes a string using the provided Text Mask at the
  1894. current Cursor position with the field being the provided Colors.
  1895. The Mask being a string representing indicating not only how to
  1896. display the output text but also which field elements are editable.
  1897. Field characters of "#" in the Mask represent the use of the next
  1898. available char in the Source String.  These are also the only
  1899. elements which may be edited by this routine.  All other characters
  1900. in the Mask will be output as they are in the Mask.  (IE. Mask=
  1901. "#,##-##/##" InText="ABCDEFG", the output would become "A,BC-DE/FG"
  1902. with -in this case- the only editable characters being the letters
  1903. A thru G)  Where the InText String is shorter that the number of
  1904. editable field elements, the Fill character will be displayed and
  1905. the string will be padded according to the Justification method
  1906. indicated (Left or Right).  Key input is also filtered in this
  1907. routine to just those contained in the Keys string.  None others
  1908. are allowed.  The user is allowed to select the Default String or
  1909. edit directly his own string until ENTER or ESC is pressed.  If ESC
  1910. is pressed, then the String is returned as the Character #27,
  1911. otherwise it is whatever was last in the input field, taking into
  1912. consideration that the Fill character is always stripped from the
  1913. result.
  1914.  
  1915. [SEE-ALSO]
  1916.  
  1917. WReadTxt
  1918. WReadNum
  1919. WReadOpt
  1920. WReadHex
  1921. WReadTxtMask
  1922. WReadNumMask
  1923. WReadFloat
  1924. WReadDateMask
  1925. WReadXBox
  1926. WReadRadioB
  1927.  
  1928. [EXAMPLE]
  1929.  
  1930. VAR
  1931.   Txt : STRING;
  1932.  
  1933. BEGIN
  1934.  
  1935.   WNew( -20,-5,-20,-10, WHITE,CYAN,WHITE,CYAN,'Window' );
  1936.  
  1937.   WriteLn;
  1938.   WriteLn( ' Enter a Text ' );
  1939.   Txt := WReadTxtMask( '###-###-####',cALPHA,' ',TRUE,WHITE,BLUE,'Default' );
  1940.  
  1941.   WriteLn;
  1942.   WriteLn( 'Result : ', Num );
  1943.  
  1944.   WMessage( 'Press any Key to Quit', WHITE, CYAN );
  1945.   While NOT WKeyPressed Do;
  1946.   WDispose( 'Window' );
  1947.  
  1948. END;
  1949.  
  1950.  
  1951. ──────────────────────────────────────────────────────────────────────────────
  1952.  
  1953.  
  1954. [FUNCTION]
  1955.  
  1956. Function  WReadNumMask(              Mask      : STRING;
  1957.                                      FC        : INTEGER;
  1958.                                      BC        : INTEGER;
  1959.                                      InNum     : LONGINT  ) : LONGINT;
  1960.  
  1961. [PARAMETERS]
  1962.  
  1963. Mask        String denoting Display output Format
  1964. FC          Foreground Color for Field
  1965. BC          Background Color for Field
  1966. InNum       Default Number to Display and Edit
  1967.  
  1968. [RETURNS]
  1969.  
  1970. The User-Entered Number
  1971.  
  1972. [DESCRIPTION]
  1973.  
  1974. This routine writes a Number using the provided Text Mask at the
  1975. current Cursor position with the field being the provided Colors.
  1976. The Mask being a string representing indicating not only how to
  1977. display the output text but also which field elements are editable.
  1978. Field characters of "#" in the Mask represent the use of the next
  1979. available digit in the Source Number.  These are also the only
  1980. elements which may be edited by this routine.  All other characters
  1981. in the Mask will be output as they are in the Mask.  (IE. Mask=
  1982. "#,##-##/##" InNum="1234567", the output would become "1,23-45/67"
  1983. with -in this case- the only editable characters being the numbers
  1984. 1 thru 7)  Where the InText String is shorter that the number of
  1985. editable field elements, the Fill character will be displayed and
  1986. the string will be padded according to the Justification method
  1987. indicated (Left or Right).  Key input is also filtered in as only
  1988. digits.  None others are allowed.  The user is allowed to select
  1989. the Default String or edit directly his own string until ENTER or
  1990. ESC is pressed.  If ESC is pressed, then the String is returned as
  1991. the number -1, otherwise it is whatever was last in the input field,
  1992. taking into consideration that leading Zeros are always stripped from
  1993. the result.
  1994.  
  1995. [SEE-ALSO]
  1996.  
  1997. WReadTxt
  1998. WReadNum
  1999. WReadOpt
  2000. WReadHex
  2001. WReadTxtMask
  2002. WReadNumMask
  2003. WReadFloat
  2004. WReadDateMask
  2005. WReadXBox
  2006. WReadRadioB
  2007.  
  2008. [EXAMPLE]
  2009.  
  2010. VAR
  2011.   Num : LONGINT;
  2012.  
  2013. BEGIN
  2014.  
  2015.   WNew( -20,-5,-20,-10, WHITE,CYAN,WHITE,CYAN,'Window' );
  2016.  
  2017.   WriteLn;
  2018.   WriteLn( ' Enter a Number ' );
  2019.   Num := WReadNumMask( '(###) ###-####',WHITE,BLUE, 1234567 );
  2020.  
  2021.   WriteLn;
  2022.   WriteLn( 'Result : ', Num );
  2023.  
  2024.   WMessage( 'Press any Key to Quit', WHITE, CYAN );
  2025.   While NOT WKeyPressed Do;
  2026.   WDispose( 'Window' );
  2027.  
  2028. END;
  2029.  
  2030.  
  2031. ──────────────────────────────────────────────────────────────────────────────
  2032.  
  2033.  
  2034. [FUNCTION]
  2035.  
  2036. Function  WReadDateMask(             FC        : INTEGER;
  2037.                                      BC        : INTEGER;
  2038.                                      InDate    : LONGINT  ) : LONGINT;
  2039.  
  2040. [PARAMETERS]
  2041.  
  2042. FC          Foreground Color for Edit Field
  2043. BC          Background Color for Edit Field
  2044. Date        Default Date in Coded Decimal Format (IE. 123456=12/34/56)
  2045.  
  2046. [RETURNS]
  2047.  
  2048. The User-Entered Date in Coded Decimal Format
  2049.  
  2050. [DESCRIPTION]
  2051.  
  2052. This routine writes a Date Value using a Date Edit Field Mask
  2053. ("##/##/##") at the current Cursor position with the field being
  2054. the provided Colors.  The InDate number is converted from the a
  2055. Coded Decimal Format to the Numeric Format for Entry (123091 =
  2056. "12/30/91")  The character "#" in the Mask represents the only
  2057. editable field numbers.  The user may select the default data or
  2058. directly enter the desired date until ENTER of ESC is pressed.  If
  2059. ESC is pressed, then the number returned by this function is -1,
  2060. otherwise it is the selected data value reconvered into the
  2061. Coded Decimal Format.
  2062.  
  2063. [SEE-ALSO]
  2064.  
  2065. WReadTxt
  2066. WReadNum
  2067. WReadOpt
  2068. WReadHex
  2069. WReadTxtMask
  2070. WReadNumMask
  2071. WReadFloat
  2072. WReadDateMask
  2073. WReadXBox
  2074. WReadRadioB
  2075.  
  2076. [EXAMPLE]
  2077.  
  2078. Uses VDates,VWinHigh;
  2079.  
  2080. VAR
  2081.   Date : TDate;
  2082.  
  2083. BEGIN
  2084.  
  2085.   WNew( -20,-5,-20,-10, WHITE,CYAN,WHITE,CYAN,'Window' );
  2086.  
  2087.   WriteLn;
  2088.   WriteLn( ' Enter a Date ' );
  2089.   Date := WReadDateMask( WHITE,BLUE, CurrDate );
  2090.  
  2091.   WriteLn;
  2092.   WriteLn( DateToStr( Date ) );
  2093.  
  2094.   WMessage( 'Press any Key to Quit', WHITE, CYAN );
  2095.   While NOT WKeyPressed Do;
  2096.   WDispose( 'Window' );
  2097.  
  2098. END;
  2099.  
  2100.  
  2101. ──────────────────────────────────────────────────────────────────────────────
  2102.  
  2103.  
  2104. [FUNCTION]
  2105.  
  2106. Function  WReadFloat(                Width     : INTEGER;
  2107.                                      Decimal   : INTEGER;
  2108.                                      FC        : INTEGER;
  2109.                                      BC        : INTEGER;
  2110.                                      InFloat   : REAL     ) : REAL;
  2111.  
  2112. [PARAMETERS]
  2113.  
  2114. Width       Total Display Width
  2115. Decimal     Number of Digits below Decimal point.
  2116. FC          Foreground Color for Edit Field
  2117. BC          Background Color for Edit Field
  2118. InFloat     Default Floating Point Number to Display and Edit
  2119.  
  2120. [RETURNS]
  2121.  
  2122. (None)
  2123.  
  2124. [DESCRIPTION]
  2125.  
  2126. This routine writes a floating point number at the current Cursor
  2127. position of the given width and number of decimal location, and
  2128. uses the provided Colors for the Edit field.  It then allows the
  2129. user to use the default number or directly enter the desired number
  2130. until ENTER or ESC is pressed.  If ESC is pressed, then the number
  2131. returned is -1.0, otherwise it is whatever was last in the input
  2132. field.
  2133.  
  2134. [SEE-ALSO]
  2135.  
  2136. WReadTxt
  2137. WReadNum
  2138. WReadOpt
  2139. WReadHex
  2140. WReadTxtMask
  2141. WReadNumMask
  2142. WReadFloat
  2143. WReadDateMask
  2144. WReadXBox
  2145. WReadRadioB
  2146.  
  2147. [EXAMPLE]
  2148.  
  2149. VAR
  2150.   R : REAL;
  2151.  
  2152. BEGIN
  2153.  
  2154.   WNew( -20,-5,-20,-10, WHITE,CYAN,WHITE,CYAN,'Window' );
  2155.  
  2156.   WriteLn;
  2157.   WriteLn( ' Enter a Floating Point Value ' );
  2158.   R := -125.25;
  2159.   R := WReadFloat( 9, 4, WHITE,BLUE,R );
  2160.  
  2161.   WriteLn;
  2162.   WriteLn( 'Result : ',R:9:4 );
  2163.  
  2164.   WMessage( 'Press any Key to Quit', WHITE, CYAN );
  2165.   While NOT WKeyPressed Do;
  2166.   WDispose( 'Window' );
  2167.  
  2168. END;
  2169.  
  2170.  
  2171. ──────────────────────────────────────────────────────────────────────────────
  2172.  
  2173.  
  2174. [FUNCTION]
  2175.  
  2176. Procedure WView(                     P         : Pointer;
  2177.                                      BufWid    : INTEGER;
  2178.                                      BufLen    : INTEGER;
  2179.                                      Wid       : INTEGER;
  2180.                                      Len       : INTEGER  );
  2181.  
  2182. [PARAMETERS]
  2183.  
  2184. P           Pointer to Data Buffer to View
  2185. BufWid      Byte Width of Each Item in the Data Buffer
  2186. BufLen      Number of Items in the Data Buffer
  2187. Wid         Display Width of View
  2188. Len         Display Length of View (Number of Items to Display)
  2189.  
  2190. [RETURNS]
  2191.  
  2192. (None)
  2193.  
  2194. [DESCRIPTION]
  2195.  
  2196. This routine displays a Scrollable Buffer of Data in a ViewPort type
  2197. Display.  The Displayed Data is limited to the portion that is within
  2198. the bounds of the Display Port, and User Scrollable to view portions
  2199. outside this area.  This routine can be used like a Menu except that
  2200. there is no returning data taken from the User other than that he is
  2201. finished Viewing the Data contained.  This routine requires that that
  2202. caller provide a Window, as it does NOT created one.
  2203.  
  2204. [SEE-ALSO]
  2205.  
  2206. WDrawMenu
  2207. WMenu
  2208. WMenuB
  2209. WAutoMenu
  2210. WAutoMenu_Kill
  2211. WView
  2212.  
  2213. [EXAMPLE]
  2214.  
  2215. VAR
  2216.   Line : ARRAY[1..10] of STRING[60];
  2217.  
  2218. BEGIN
  2219.  
  2220.   Line[ 1] := 'Program TestThis;';
  2221.   Line[ 2] := 'Uses CRT;';
  2222.   Line[ 3] := '';
  2223.   Line[ 4] := 'VAR';
  2224.   Line[ 5] := '  I : INTEGER;';
  2225.   Line[ 6] := '';
  2226.   Line[ 7] := 'BEGIN';
  2227.   Line[ 8] := '  For i := 1 to 1000 Do';
  2228.   Line[ 9] := '    WriteLn( i : 3 );
  2229.   Line[10] := 'END.';
  2230.   P := Addr( Line );
  2231.  
  2232.   WMessage( 'Use Arrow Keys to Scroll|<ESC> to Quit', WHITE,CYAN );
  2233.  
  2234.   WNew( 10,5,40,10, WHITE,CYAN,WHITE,CYAN, 'Pascal Program' );
  2235.  
  2236.   WView( Addr( Line ), Sizeof( Line[1]), 10, 30, 5 );
  2237.  
  2238.   WDispose( 'Pascal Program' );
  2239.  
  2240. END;
  2241.  
  2242.  
  2243. ──────────────────────────────────────────────────────────────────────────────
  2244.  
  2245.  
  2246. [FUNCTION]
  2247.  
  2248. Procedure WCWrite(                   S         : ST80     );
  2249.  
  2250. [PARAMETERS]
  2251.  
  2252. S           String to Center and Display
  2253.  
  2254. [RETURNS]
  2255.  
  2256. (None)
  2257.  
  2258. [DESCRIPTION]
  2259.  
  2260. This routine Centers and Writes the given String in the current Window
  2261. on the current Line.  Cursor is Right Border of the Window on the same
  2262. Line.
  2263.  
  2264. [SEE-ALSO]
  2265.  
  2266. WCWrite
  2267. WCWriteLn
  2268. WLineMsg
  2269. WPrgNameMsg
  2270. WMessage
  2271. WInfoMsg
  2272. WHorizLine
  2273. WVertLine
  2274.  
  2275. [EXAMPLE]
  2276.  
  2277. BEGIN
  2278.  
  2279.   WNew( 5,2,40,15, WHITE,CYAN,WHITE,CYAN, 'Window' );
  2280.  
  2281.   WriteLn;
  2282.   WriteLn;
  2283.   WCWrite( 'This is a Centered String' );
  2284.  
  2285.   While NOT WKeyPressed Do;
  2286.   WDispose( 'Window' );
  2287.  
  2288. END;
  2289.  
  2290.  
  2291. ──────────────────────────────────────────────────────────────────────────────
  2292.  
  2293.  
  2294. [FUNCTION]
  2295.  
  2296. Procedure WCWriteLn(                 S         : ST80     );
  2297.  
  2298. [PARAMETERS]
  2299.  
  2300. S           String to Center and Diplay
  2301.  
  2302. [RETURNS]
  2303.  
  2304. (None)
  2305.  
  2306. [DESCRIPTION]
  2307.  
  2308. This routine Centers and Writes the given String in the current Window
  2309. on the current Line.  The Cursor is then moved to the Next Line down on
  2310. the Left Border of the current Window.  If the Line written to was the
  2311. last Line in the Window, this causes the Text within the Window to scroll
  2312. up by one line.
  2313.  
  2314. [SEE-ALSO]
  2315.  
  2316. WCWrite
  2317. WCWriteLn
  2318. WLineMsg
  2319. WPrgNameMsg
  2320. WMessage
  2321. WInfoMsg
  2322. WHorizLine
  2323. WVertLine
  2324.  
  2325. [EXAMPLE]
  2326.  
  2327. BEGIN
  2328.  
  2329.   WNew( 5,2,50,15, WHITE,CYAN,WHITE,CYAN, 'Window' );
  2330.  
  2331.   WriteLn;
  2332.   WCWriteLn( 'This is a Centered String' );
  2333.   WriteLn;
  2334.   WCWriteLn( 'However instead of Writing just one line' );
  2335.   WCWriteLn( 'with NO Carriage Return' );
  2336.   WCWriteLn( 'This Routine Allows you to keep on Writing' );
  2337.   WCWriteLn( 'as much as you have space for.' );
  2338.   WriteLn;
  2339.   WCWriteLn( 'But I wouldn''t use this on the last Line' );
  2340.   WCWriteLn( 'of the Window!' );
  2341.  
  2342.   While NOT WKeyPressed Do;
  2343.   WDispose( 'Window' );
  2344.  
  2345. END;
  2346.  
  2347.  
  2348. ──────────────────────────────────────────────────────────────────────────────
  2349.  
  2350.  
  2351. [FUNCTION]
  2352.  
  2353. Procedure FindInvisibleButtons(    var B         : TButtonList4;
  2354.                                    var Count     : BYTE;
  2355.                                        PlusX     : BYTE;
  2356.                                        Y         : BYTE;
  2357.                                        S         : ST80    );
  2358.  
  2359. [PARAMETERS]
  2360.  
  2361. B           VAR Pointer to Modified Button List
  2362. Count       VAR Modified Number of Buttons in List
  2363. PlusX       Screen Offset from Edge (mainly for Windowed Text)
  2364. Y           Screen Line Number where this String will Reside
  2365. S           String to Parse for Buttons
  2366.  
  2367. [RETURNS]
  2368.  
  2369. Function : None
  2370. (VAR     : [B] Pointer to Modified Button List)
  2371. (VAR     : [Count] Modified Number of Buttons in List)
  2372.  
  2373. [DESCRIPTION]
  2374.  
  2375. Reads a Text String and Extracts any "Buttons" Located within the String.
  2376. These are Considered "Invisible" Buttons.
  2377.  
  2378. Some Mouse Buttons may be "Invisible" Buttons such as text contained upon
  2379. a message or other text status line.  A button isn't actually drawn there
  2380. as the text is sufficient, however this does not change the fact that the
  2381. area is an Active Button.
  2382.  
  2383. When This function is called, the current Mouse coordinates are checked
  2384. with button list to determine if ANY Button is below it.  If it happens
  2385. to be an "Invisible" Button, the Text below it is compared with one of
  2386. the Invisible Button Text to determine what function is being referenced.
  2387.  
  2388. Invisible Button Text must be one of the Following:
  2389.  
  2390.   "<ESC>"
  2391.   "<SPACE>"
  2392.   "<ENTER>"
  2393.   "<Fx>"  (Where X is a Number from 1 to Max Function Key Nbr)
  2394.           (ie. "<F10>")
  2395.  
  2396.  
  2397. [SEE-ALSO]
  2398.  
  2399. CheckInvisibleButtons
  2400.  
  2401. [EXAMPLE]
  2402.  
  2403. VAR
  2404.   BL    : TButtonList4;
  2405.   Count : BYTE;
  2406.  
  2407. BEGIN
  2408.  
  2409.   Count := 0;
  2410.  
  2411.   Inc( Count );
  2412.   MakeBRec( Addr( BL[Count] ), 2, 4,5, 'OK' );
  2413.  
  2414.   S     := 'Press <F1> for Help, <ENTER>=Continue, <ESC>=Quit';
  2415.   Line  := 25;  { Last Line of Screen - Where this String will be }
  2416.  
  2417.   FindInvisibleButtons( BL, Count, 1, Line, S );
  2418.  
  2419.   WriteLn( 'There are Now ',Count,' Buttons' );
  2420.  
  2421. END;
  2422.  
  2423.  
  2424. ──────────────────────────────────────────────────────────────────────────────
  2425.  
  2426.  
  2427. [FUNCTION]
  2428.  
  2429. Procedure WLineMsg(                  S         : STRING;
  2430.                                      FC        : BYTE;
  2431.                                      BC        : BYTE;
  2432.                                      Y         : BYTE;
  2433.                                  var B         : TButtonList4;
  2434.                                  var Count     : BYTE     );
  2435.  
  2436. [PARAMETERS]
  2437.  
  2438. S           Message Line Text
  2439. FC          Foreground Color
  2440. BC          Background Color
  2441. Y           Y Window Coordinate for Message Line
  2442. V           VAR Returned Button List Data
  2443. Count       VAR Returned Number of Buttons in List
  2444.  
  2445. [RETURNS]
  2446.  
  2447. (None)
  2448.  
  2449. [DESCRIPTION]
  2450.  
  2451. [SEE-ALSO]
  2452.  
  2453. WCWrite
  2454. WCWriteLn
  2455. WLineMsg
  2456. WPrgNameMsg
  2457. WMessage
  2458. WInfoMsg
  2459. WHorizLine
  2460. WVertLine
  2461.  
  2462. [EXAMPLE]
  2463.  
  2464.  
  2465. ──────────────────────────────────────────────────────────────────────────────
  2466.  
  2467.  
  2468. [FUNCTION]
  2469.  
  2470. Procedure WPrgNameMsg(               S         : STRING;
  2471.                                      FC        : BYTE;
  2472.                                      BC        : BYTE     );
  2473.  
  2474. [PARAMETERS]
  2475.  
  2476. S           String to Display on the Program Name Message Line
  2477. FC          Foreground Color of Program Name Message Line
  2478. BC          Background Color of Program Name Message Line
  2479.  
  2480. [RETURNS]
  2481.  
  2482. (None)
  2483.  
  2484. [DESCRIPTION]
  2485.  
  2486. This routine writes the provided Text onto the Program Name Message
  2487. Line (the Top Line of the Screen).  Text is Left Justified, however
  2488. if the caller wished to have part of the text Right Justified, he
  2489. need only add a Vertical Bar character ("|") with the Right Justified
  2490. text following it.  The Entire line is colored using the provided
  2491. Colors.  To Blank the Entire line, pass in one or more space
  2492. characters.  To Remove the line completely from the Screen, pass in
  2493. an Empty String.
  2494.  
  2495. [SEE-ALSO]
  2496.  
  2497. WCWrite
  2498. WCWriteLn
  2499. WLineMsg
  2500. WPrgNameMsg
  2501. WMessage
  2502. WInfoMsg
  2503. WHorizLine
  2504. WVertLine
  2505.  
  2506. [EXAMPLE]
  2507.  
  2508. BEGIN
  2509.  
  2510.   WOpen('▒',BLACK,BLUE,'CLOCK');
  2511.  
  2512.   WPrgNameMsg('This is the WPrgNameMsg Line. TEST Ver 1.0',WHITE,CYAN );
  2513.   WInfoMsgName('This is the WInfoMsg Line.  Keep him informed of all the Events', WHITE,BLUE );
  2514.   WMessage( 'This is the WMessage Line. Prompt User Here.|Press any Key to Quit',WHITE,CYAN );
  2515.  
  2516.   While NOT WKeyPressed Do;
  2517.   WClose;
  2518.  
  2519. END;
  2520.  
  2521.  
  2522. ──────────────────────────────────────────────────────────────────────────────
  2523.  
  2524.  
  2525. [FUNCTION]
  2526.  
  2527. Procedure WMessage(                  S         : STRING;
  2528.                                      FC        : BYTE;
  2529.                                      BC        : BYTE     );
  2530.  
  2531. [PARAMETERS]
  2532.  
  2533. S           String to Display on the Message Line
  2534. FC          Foreground Color of Message Line
  2535. BC          Background Color of Message Line
  2536.  
  2537. [RETURNS]
  2538.  
  2539. (None)
  2540.  
  2541. [DESCRIPTION]
  2542.  
  2543. This routine writes the provided Text onto the Message Line (the Last
  2544. Line of the Screen -line 25 in 25 line mode).  Text is Left Justified,
  2545. however if the caller wished to have part of the text Right Justified,
  2546. he need only add a Vertical Bar character ("|") with the Right Justified
  2547. text following it.  The Entire line is colored using the provided Colors.
  2548. To Blank the Entire line, pass in one or more space characters.  To
  2549. Remove the line completely from the Screen, pass in an Empty String.
  2550.  
  2551. [SEE-ALSO]
  2552.  
  2553. WCWrite
  2554. WCWriteLn
  2555. WLineMsg
  2556. WPrgNameMsg
  2557. WMessage
  2558. WInfoMsg
  2559. WHorizLine
  2560. WVertLine
  2561.  
  2562. [EXAMPLE]
  2563.  
  2564. BEGIN
  2565.  
  2566.   WOpen('▒',BLACK,BLUE,'CLOCK');
  2567.  
  2568.   WPrgNameMsg('This is the WPrgNameMsg Line. TEST Ver 1.0',WHITE,CYAN );
  2569.   WInfoMsgName('This is the WInfoMsg Line.  Keep him informed of all the Events', WHITE,BLUE );
  2570.   WMessage( 'This is the WMessage Line. Prompt User Here.|Press any Key to Quit',WHITE,CYAN );
  2571.  
  2572.   While NOT WKeyPressed Do;
  2573.   WClose;
  2574.  
  2575. END;
  2576.  
  2577.  
  2578. ──────────────────────────────────────────────────────────────────────────────
  2579.  
  2580.  
  2581. [FUNCTION]
  2582.  
  2583. Procedure WInfoMsg(                  S         : STRING;
  2584.                                      FC        : BYTE;
  2585.                                      BC        : BYTE     );
  2586.  
  2587. [PARAMETERS]
  2588.  
  2589. S           String to Display on the Info Message Line
  2590. FC          Foreground Color of Info Message Line
  2591. BC          Background Color of Info Message Line
  2592.  
  2593. [RETURNS]
  2594.  
  2595. (None)
  2596.  
  2597. [DESCRIPTION]
  2598.  
  2599. This routine writes the provided Text onto the Info Message Line (the
  2600. Next to the Last Line of the Screen -line 24 in 25 line mode).  Text
  2601. is Left Justified, however if the caller wished to have part of the
  2602. text Right Justified, he need only add a Vertical Bar character ("|")
  2603. with the Right Justified text following it.  The Entire line is
  2604. colored using the provided Colors.  To Blank the Entire line, pass in
  2605. one or more space characters.  To Remove the line completely from the
  2606. Screen, pass in an Empty String.
  2607.  
  2608. [SEE-ALSO]
  2609.  
  2610. WCWrite
  2611. WCWriteLn
  2612. WLineMsg
  2613. WPrgNameMsg
  2614. WMessage
  2615. WInfoMsg
  2616. WHorizLine
  2617. WVertLine
  2618.  
  2619. [EXAMPLE]
  2620.  
  2621. BEGIN
  2622.  
  2623.   WOpen('▒',BLACK,BLUE,'CLOCK');
  2624.  
  2625.   WPrgNameMsg('This is the WPrgNameMsg Line. TEST Ver 1.0',WHITE,CYAN );
  2626.   WInfoMsgName('This is the WInfoMsg Line.  Keep him informed of all the Events', WHITE,BLUE );
  2627.   WMessage( 'This is the WMessage Line. Prompt User Here.|Press any Key to Quit',WHITE,CYAN );
  2628.  
  2629.   While NOT WKeyPressed Do;
  2630.   WClose;
  2631.  
  2632. END;
  2633.  
  2634.  
  2635. ──────────────────────────────────────────────────────────────────────────────
  2636.  
  2637.  
  2638. [FUNCTION]
  2639.  
  2640. Procedure WPrompt(                   S         : ST80;
  2641.                                      FC        : BYTE;
  2642.                                      BC        : BYTE     );
  2643.  
  2644. [PARAMETERS]
  2645.  
  2646. S           String to Display
  2647. FC          Foreground Color of Line
  2648. BC          Background Color of Line
  2649.  
  2650. [RETURNS]
  2651.  
  2652. (None)
  2653.  
  2654. [DESCRIPTION]
  2655.  
  2656. This routine writes the provided Text onto the Last Line of the Current
  2657. Window.  The Entire line is colored using the provided Colors.  To Blank
  2658. the Entire line, pass in one or more space characters.  To Remove the
  2659. line completely from the Window, pass in an Empty String.
  2660.  
  2661. [SEE-ALSO]
  2662.  
  2663. [EXAMPLE]
  2664.  
  2665. BEGIN
  2666.  
  2667.   WNew( 5, 2, 40, 7, WHITE,BLUE,WHITE,BLUE,'Window' );
  2668.  
  2669.   WPrompt( 'Press any Key to Quit...', WHITE,RED );
  2670.  
  2671.   While NOT WKeyPressed Do;
  2672.   WDispose( 'Window' );
  2673.  
  2674. END;
  2675.  
  2676.  
  2677. ──────────────────────────────────────────────────────────────────────────────
  2678.  
  2679.  
  2680. [FUNCTION]
  2681.  
  2682. Function  WGemDialogBox(             S         : STRING   ) : INTEGER;
  2683.  
  2684. [PARAMETERS]
  2685.  
  2686. S           GEM Dialog Box Data String
  2687.  
  2688. [RETURNS]
  2689.  
  2690. The User-Selected Dialog Button number
  2691.  
  2692. [DESCRIPTION]
  2693.  
  2694. This is Dialog Box is intended for use by applications which require
  2695. User Multiple Selection Responses as opposed to only the acknowledgement
  2696. of a message.  This is where a logic fork requires the programmer to
  2697. ask the user to make a decision from a limited selection of courses.
  2698.  
  2699. The GEM Dialog Box Data String has three Parts (with a forth optional).
  2700. Each part is contained within Open and Close Bracket chars "[" and "]"
  2701. representing the beginning and end of that portion of the Data.
  2702.  
  2703. The first String Data Part is the Dialog Icon Number - a character from
  2704. "1" to "9".  This represents the Icon Type to use for the Display.  They
  2705. are as follows:
  2706.  
  2707.   Icon #1 = "  █ "           Icon #2 = " ▄▀▀▀▄ "
  2708.             "  █ "                     "    ▄▀ "
  2709.             "  █ "                     "   █   "
  2710.             "  ▄ "                     "   ▄   "
  2711.             "  ▀ "                     "       "
  2712.  
  2713.   Icon #3 = "   ▄▄           Icon #4 = "   ▄▄▄   "
  2714.             " ▄▀    ▀▄ "               " ▄▀   ▀▄ "
  2715.             " █ STOP █ "               " █ RIP █ "
  2716.             " ▀▄    ▄▀ "               " █     █ "
  2717.             "   ▀▀▀▀   "               " ▀     ▀ "
  2718.  
  2719.   Icon #5 = " ─────── "      Icon #6 = "          "
  2720.             " ▀▀▀▀▀▀▀ "                " Visionix "
  2721.             " ███████ "                " ░░▒▒▒▓▓▓ "
  2722.             " C  D  P "                "          "
  2723.             "         "                "          "
  2724.  
  2725.  
  2726. The second String Data Part is the Message Text Data.  It is basically
  2727. the Dialog Box Message with each line of text being separated by a
  2728. Vertical Bar character ("|").  The Dialog Box will automatically size
  2729. itself (within screen limitations) to compensate for differing text
  2730. line length.  It does the same for the number of lines too.
  2731.  
  2732. The third String Data Part is the Dialog Button Data.  It is the Button
  2733. Text with the number of buttons, like the Message Data, being separated
  2734. by Vertical Bars.  The Buttons are automatically sized and place along
  2735. the bottom of the Dialog Box.  The Button type is taken from the
  2736. previously defined Window Environment Button Type.  See "WOpen" or "WSet"
  2737. for further descriptions.
  2738.  
  2739. The forth String Data Part is optional.  It is the Button Hot-Key
  2740. Character Definition Data.  This is essentially a short string with
  2741. each character being the Unique Hot-Key Character for the corresponding
  2742. sequential button.  The character is entirely independent from the
  2743. Button Text.  If however, the caller desired to establish the Escape
  2744. Character as a Hot-Key for a certain button, he could enter this by
  2745. using the string "\esc" (which would be interpreted as a single hot-key)
  2746. for the desired button.  In this case, if the ESC key were ever pressed,
  2747. it would call the cooresponding sequential button and returns that
  2748. button number as the result.
  2749.  
  2750. An example GEM Dialog Box Data String would be:
  2751.  
  2752.   "[2][There has been an Error.|Do you wish to Continue?][Yes|No]"
  2753.  
  2754. This would create a Dialog Box using the Question Mark Icon, and
  2755. having 2 lines of Text.  There would also be 2 Buttons with the
  2756. "Yes" Button being the default.  If pressed it would cause this
  2757. routined to return a value of 1.  If "No" were pressed the returning
  2758. value would be 2.
  2759.  
  2760. If, however we added to the above string the additional data of "[YN]",
  2761. we would now be able to select the desired answer using the letters
  2762. "Y" for the "Yes" Button, or "N" for the "No" Button.  To have the "No"
  2763. Button respond to the ESC key instead we would use "[Y\esc]".
  2764.  
  2765. When the Entire Dialog Box is Displayed, it waits for the User to
  2766. Select an Answer (using the Arrow Keys and ENTER, or Hot-Keys) and
  2767. returns the Selection in terms of the Button Number.  The First Button
  2768. being One (1), the Second being Two (2), and so on.  Escape is returned
  2769. as -1.
  2770.  
  2771. After the Selection is made, this routine removes the Dialog Box it
  2772. created and returns the display to what it was prior to the call.
  2773.  
  2774. [SEE-ALSO]
  2775.  
  2776. WGemDialogBox
  2777. WGemMsgBox
  2778. WDrawIcon
  2779. WDoDialogBox
  2780. WGetIconWidth
  2781.  
  2782. [EXAMPLE]
  2783.  
  2784. VAR
  2785.   Z : INTEGER;
  2786.  
  2787. BEGIN
  2788.  
  2789.   Z := WGemDialogBox( '[1][Error in Operation|'+
  2790.                           'Code '+ByteToHex( $FF )+'h|'+
  2791.                           'Select Action][Abort|Retry|Ignore|Fail][ARIF]' );
  2792.   CASE Z OF
  2793.  
  2794.     1 : WriteLn( 'User Aborted Action.' );
  2795.     2 : WriteLn( 'User Wants to Retry Action.' );
  2796.     3 : WriteLn( 'User Ignore Failure and Continue.' );
  2797.     4 : WriteLn( 'User Wants to Accept Failure and Pass Along Error Code.' );
  2798.     Else WriteLn( 'User ESCAPED.  Must be Too Scared to Take Action!' );
  2799.  
  2800.   END;  { Case Z }
  2801.  
  2802. END;
  2803.  
  2804.  
  2805. ──────────────────────────────────────────────────────────────────────────────
  2806.  
  2807.  
  2808. [FUNCTION]
  2809.  
  2810. Procedure WDrawButton(               Btype     : INTEGER;
  2811.                                      X         : INTEGER;
  2812.                                      Y         : INTEGER;
  2813.                                      FC        : INTEGER;
  2814.                                      BC        : INTEGER;
  2815.                                      Text      : STRING   );
  2816.  
  2817. [PARAMETERS]
  2818.  
  2819. Btype       Button Type Number
  2820. X           X Screen Coordinate
  2821. Y           Y Screen Coordinate
  2822. FC          Foreground Button Color
  2823. BC          Background Button Color
  2824. Text        Button Text
  2825.  
  2826. [RETURNS]
  2827.  
  2828. (None)
  2829.  
  2830. [DESCRIPTION]
  2831.  
  2832. This routine takes the provided Button Data and Displays the Buttons.
  2833.  
  2834. Button Types are as follows:
  2835.  
  2836.   1 = Button 3 Lines Tall
  2837.       Double Border Box
  2838.       With No Shadow
  2839.  
  2840.   2 = Button 1 Line Tall
  2841.       No Border
  2842.       With Large Shadow
  2843.  
  2844.   3 = Button 1 Line Tall
  2845.       No Border
  2846.       With 1/2 Size Shadow
  2847.  
  2848.   4 = Button 1 Line Tall
  2849.       No Border
  2850.       With Large Shadow
  2851.  
  2852.   5 = Button 1 Line Tall
  2853.       With Large Shadow
  2854.  
  2855.   6 = Button 1 Line Tall
  2856.       With Large Shadow
  2857.  
  2858.     5, 6 :
  2859.     BEGIN
  2860.       WFastWrite( X, Y + 1, FC, BC, ' ' + Text );
  2861.       WFastWrite( X + Length( Text ) + 1, Y + 1,
  2862.                   BLACK, WinEnv.CurBackColor, ' ' );
  2863.  
  2864.       FillChar( S, Length( Text ) + 3, ' ' );
  2865.       S[0] := Chr( Length( Text ) + 2 );
  2866.  
  2867.       WFastWrite( X, Y + 2, BLACK, WinEnv.CurBackColor, S );
  2868.     END;   { Of Btype = 5 or 6 }
  2869.  
  2870.   7 = Button 1 Line Tall
  2871.       No Border
  2872.       Button Text inside "<" & ">" characters
  2873.       With Large Shadow,
  2874.  
  2875.   8 = Button 3 Lines Tall
  2876.       Uses Widget Remapped Fonts as Border
  2877.  
  2878.   9 = Button 1 Line Tall
  2879.       No Border
  2880.       With Right Side Shadow
  2881.  
  2882.  
  2883. [SEE-ALSO]
  2884.  
  2885. WDrawButton
  2886. WBlinkButton
  2887. WDrawButtonList
  2888. WMakeBRec
  2889.  
  2890. [EXAMPLE]
  2891.  
  2892.  
  2893. ──────────────────────────────────────────────────────────────────────────────
  2894.  
  2895.  
  2896. Procedure WGemMsgBox(                S         : STRING   );
  2897.  
  2898. [PARAMETERS]
  2899.  
  2900. S           GEM Message Box Data String
  2901.  
  2902. [RETURNS]
  2903.  
  2904. The User-Selected Message Button number
  2905.  
  2906. [DESCRIPTION]
  2907.  
  2908. This is Message Box is intended for use by applications which require
  2909. only the Acknowledgement of a Message as opposed to a User Selection
  2910. Response.
  2911.  
  2912. The GEM Message Box Data String has three Parts.  Each part is
  2913. contained within Open and Close Bracket chars "[" and "]" representing
  2914. the beginning and end of that portion of the Data.
  2915.  
  2916. The first String Data Part is the Message Box Icon Number - a character
  2917. from "1" to "9".  This represents the Icon Type to use for the Display.
  2918. They are as follows:
  2919.  
  2920.   Icon #1 = "  █ "           Icon #2 = " ▄▀▀▀▄ "
  2921.             "  █ "                     "    ▄▀ "
  2922.             "  █ "                     "   █   "
  2923.             "  ▄ "                     "   ▄   "
  2924.             "  ▀ "                     "       "
  2925.  
  2926.   Icon #3 = "   ▄▄           Icon #4 = "   ▄▄▄   "
  2927.             " ▄▀    ▀▄ "               " ▄▀   ▀▄ "
  2928.             " █ STOP █ "               " █ RIP █ "
  2929.             " ▀▄    ▄▀ "               " █     █ "
  2930.             "   ▀▀▀▀   "               " ▀     ▀ "
  2931.  
  2932.   Icon #5 = " ─────── "      Icon #6 = "          "
  2933.             " ▀▀▀▀▀▀▀ "                " Visionix "
  2934.             " ███████ "                " ░░▒▒▒▓▓▓ "
  2935.             " C  D  P "                "          "
  2936.             "         "                "          "
  2937.  
  2938. The second String Data Part is the Message Box Text Data.  It is
  2939. basically the Dialog Box Message with each line of text being separated
  2940. by a Vertical Bar character ("|").  The Message Box will automatically
  2941. size itself (within screen limitations) to compensate for differing text
  2942. line length.  It does the same for the number of lines too.
  2943.  
  2944. The third String Data Part is the Dialog Button Data.  It is the Button
  2945. Text.  Unlike the GEM Dialog Box, the Message Box allows for only One
  2946. Button Return by the User.  The Button is automatically sized and placed
  2947. along the bottom of the Dialog Box.  The Button type is taken from the
  2948. previously defined Window Environment Button Type.  See "WOpen" or "WSet"
  2949. for further descriptions.
  2950.  
  2951. The forth String Data Part is optional.  It is the Button Hot-Key
  2952. Character Definition Data.  This is essentially a short string with
  2953. each character being the Unique Hot-Key Character for the corresponding
  2954. sequential button.  The character is entirely independent from the
  2955. Button Text.  If however, the caller desired to establish the Escape
  2956. Character as a Hot-Key for a certain button, he could enter this by
  2957. using the string "\esc" (which would be interpreted as a single hot-key)
  2958. for the desired button.  In this case, if the ESC key were ever pressed,
  2959. it would call the cooresponding sequential button and returns that
  2960. button number as the result.
  2961.  
  2962. An example GEM Message Box Data String would be:
  2963.  
  2964.   "[1][There has been an Error.|This Program Halting.][Ok]"
  2965.  
  2966. This would create a Message Box using the Exclamation Point Icon, and
  2967. having 2 lines of Text.  There would also be 1 Button with the text
  2968. "Ok" on it. Any Key Press by the User will Activate the Button and Exit
  2969. the Routine.
  2970.  
  2971. After the Message is read and Acknowledged, this routine removes the
  2972. Message Box it created and returns the display to what it was prior to
  2973. the call.
  2974.  
  2975. [SEE-ALSO]
  2976.  
  2977. WGemDialogBox
  2978. WGemMsgBox
  2979. WDrawIcon
  2980. WDoDialogBox
  2981. WGetIconWidth
  2982.  
  2983. [EXAMPLE]
  2984.  
  2985. BEGIN
  2986.  
  2987.   WGemMsgBox( '[1][Error in Operation||Code '+ByteToHex( $FF )+'h][OK]' );
  2988.  
  2989. END;
  2990.  
  2991.  
  2992. ──────────────────────────────────────────────────────────────────────────────
  2993.  
  2994.  
  2995. [FUNCTION]
  2996.  
  2997. Procedure WBlinkButton(              BType      : BYTE;
  2998.                                      X          : BYTE;
  2999.                                      Y          : BYTE;
  3000.                                      FC1        : BYTE;
  3001.                                      BC1        : BYTE;
  3002.                                      FC2        : BYTE;
  3003.                                      BC2        : BYTE;
  3004.                                      Delay1     : WORD;
  3005.                                      Delay2     : WORD;
  3006.                                      BlinkCount : BYTE;
  3007.                                      S          : ST80    );
  3008.  
  3009. [PARAMETERS]
  3010.  
  3011. Btype       Button Type Number
  3012. X           X Screen Coordinate
  3013. Y           Y Screen Coordinate
  3014. FC1         Foreground Button Color (Normal)
  3015. BC1         Background Button Color (Normal)
  3016. FC2         Foreground Button Color (Blink Color)
  3017. BC2         Background Button Color (Blink Color)
  3018. Delay1      Pause Time while Normal Colors
  3019. Delay2      Pause Time while Blink Colors
  3020. BlinkCount  Number of Time to Cycle thru Norm-Blink Sequence
  3021.  
  3022. [RETURNS]
  3023.  
  3024. (None)
  3025.  
  3026. [DESCRIPTION]
  3027.  
  3028. This routine animates the Button Blinking using the provided Button
  3029. information.  It is mainly used to draw attention to the selected
  3030. Button before the action is called.
  3031.  
  3032. Button Types are as follows:
  3033.  
  3034.   1 = Button 3 Lines Tall
  3035.       Double Border Box
  3036.       With No Shadow
  3037.  
  3038.   2 = Button 1 Line Tall
  3039.       No Border
  3040.       With Large Shadow
  3041.  
  3042.   3 = Button 1 Line Tall
  3043.       No Border
  3044.       With 1/2 Size Shadow
  3045.  
  3046.   4 = Button 1 Line Tall
  3047.       No Border
  3048.       With Large Shadow
  3049.  
  3050.   5 = Button 1 Line Tall
  3051.       With Large Shadow
  3052.  
  3053.   6 = Button 1 Line Tall
  3054.       With Large Shadow
  3055.  
  3056.     5, 6 :
  3057.     BEGIN
  3058.       WFastWrite( X, Y + 1, FC, BC, ' ' + Text );
  3059.       WFastWrite( X + Length( Text ) + 1, Y + 1,
  3060.                   BLACK, WinEnv.CurBackColor, ' ' );
  3061.  
  3062.       FillChar( S, Length( Text ) + 3, ' ' );
  3063.       S[0] := Chr( Length( Text ) + 2 );
  3064.  
  3065.       WFastWrite( X, Y + 2, BLACK, WinEnv.CurBackColor, S );
  3066.     END;   { Of Btype = 5 or 6 }
  3067.  
  3068.   7 = Button 1 Line Tall
  3069.       No Border
  3070.       Button Text inside "<" & ">" characters
  3071.       With Large Shadow,
  3072.  
  3073.   8 = Button 3 Lines Tall
  3074.       Uses Widget Remapped Fonts as Border
  3075.  
  3076.   9 = Button 1 Line Tall
  3077.       No Border
  3078.       With Right Side Shadow
  3079.  
  3080. [SEE-ALSO]
  3081.  
  3082. WDrawButton
  3083. WBlinkButton
  3084. WDrawButtonList
  3085. WMakeBRec
  3086.  
  3087. [EXAMPLE]
  3088.  
  3089. VAR
  3090.   BR : TButton;
  3091.  
  3092. BEGIN
  3093.  
  3094.   WMakeBRec( BR, 2, 4,5, WHITE,GREEN, 'OK' );
  3095.  
  3096.   WDrawButtonList( Addr( BR ), 1 );
  3097.  
  3098.   WBlinkButton( 2, 4,5, WHITE,GREEN, WHITE,WHITE, 50,50, 3, 'OK' );
  3099.  
  3100. END;
  3101.  
  3102.  
  3103. ──────────────────────────────────────────────────────────────────────────────
  3104.  
  3105.  
  3106. [FUNCTION]
  3107.  
  3108. Procedure WDrawButtonList(           BList     : PButtonList;
  3109.                                      Count     : BYTE     );
  3110.  
  3111. [PARAMETERS]
  3112.  
  3113. BList       Pointer to a List of Button Data
  3114. Count       Number of Buttons in List
  3115.  
  3116. [RETURNS]
  3117.  
  3118. (None)
  3119.  
  3120. [DESCRIPTION]
  3121.  
  3122. This routine reads the Button List Data and displays each and every
  3123. Button up to the number of buttons in the List.
  3124.  
  3125. [SEE-ALSO]
  3126.  
  3127. WDrawButton
  3128. WBlinkButton
  3129. WDrawButtonList
  3130. WMakeBRec
  3131.  
  3132. [EXAMPLE]
  3133.  
  3134. VAR
  3135.  
  3136. BEGIN
  3137.  
  3138. END;
  3139.  
  3140.  
  3141. ──────────────────────────────────────────────────────────────────────────────
  3142.  
  3143.  
  3144. [FUNCTION]
  3145.  
  3146. Procedure WMakeBRec(             var BRec      : TButton;
  3147.                                      BType     : BYTE;
  3148.                                      X         : BYTE;
  3149.                                      Y         : BYTE;
  3150.                                      FC        : INTEGER;
  3151.                                      BC        : INTEGER;
  3152.                                      Text      : STRING   );
  3153.  
  3154. [PARAMETERS]
  3155.  
  3156. BRec        VAR Returned Button Data Record
  3157. BType       Button Type Number
  3158. X           X Screen Coordinate
  3159. Y           Y Screen Coordinate
  3160. FC          Foreground Button Color
  3161. BC          Background Button Color
  3162. Text        Button Text
  3163.  
  3164. [RETURNS]
  3165.  
  3166. Function : None
  3167. (VAR     : [BRec] Button Data Record)
  3168.  
  3169. [DESCRIPTION]
  3170.  
  3171. This routine takes the provided Button Data and puts it all in a
  3172. single provided Button record.  This is returned to the caller as
  3173. a VAR.  The purpose was to simplify the creation of Button records.
  3174.  
  3175. Button Types are as follows:
  3176.  
  3177.   1 = Button 3 Lines Tall
  3178.       Double Border Box
  3179.       With No Shadow
  3180.  
  3181.   2 = Button 1 Line Tall
  3182.       No Border
  3183.       With Large Shadow
  3184.  
  3185.   3 = Button 1 Line Tall
  3186.       No Border
  3187.       With 1/2 Size Shadow
  3188.  
  3189.   4 = Button 1 Line Tall
  3190.       No Border
  3191.       With Large Shadow
  3192.  
  3193.   5 = Button 1 Line Tall
  3194.       With Large Shadow
  3195.  
  3196.   6 = Button 1 Line Tall
  3197.       With Large Shadow
  3198.  
  3199.     5, 6 :
  3200.     BEGIN
  3201.       WFastWrite( X, Y + 1, FC, BC, ' ' + Text );
  3202.       WFastWrite( X + Length( Text ) + 1, Y + 1,
  3203.                   BLACK, WinEnv.CurBackColor, ' ' );
  3204.  
  3205.       FillChar( S, Length( Text ) + 3, ' ' );
  3206.       S[0] := Chr( Length( Text ) + 2 );
  3207.  
  3208.       WFastWrite( X, Y + 2, BLACK, WinEnv.CurBackColor, S );
  3209.     END;   { Of Btype = 5 or 6 }
  3210.  
  3211.   7 = Button 1 Line Tall
  3212.       No Border
  3213.       Button Text inside "<" & ">" characters
  3214.       With Large Shadow,
  3215.  
  3216.   8 = Button 3 Lines Tall
  3217.       Uses Widget Remapped Fonts as Border
  3218.  
  3219.   9 = Button 1 Line Tall
  3220.       No Border
  3221.       With Right Side Shadow
  3222.  
  3223. [SEE-ALSO]
  3224.  
  3225. WDrawButton
  3226. WBlinkButton
  3227. WDrawButtonList
  3228. WMakeBRec
  3229.  
  3230. [EXAMPLE]
  3231.  
  3232. VAR
  3233.   BR : TButton;
  3234.  
  3235. BEGIN
  3236.  
  3237.   WMakeBRec( BR, 2, 4,5, WHITE,GREEN, 'OK' );
  3238.  
  3239.   WDrawButtonList( Addr( BR ), 1 );
  3240.  
  3241.   While NOT WKeyPressed Do;
  3242.  
  3243. END;
  3244.  
  3245.  
  3246. ──────────────────────────────────────────────────────────────────────────────
  3247.  
  3248.  
  3249. [FUNCTION]
  3250.  
  3251. Procedure WControlKeyProc(   Status    : Byte;
  3252.                              Key1      : CHAR;
  3253.                              Key2      : CHAR    );
  3254.  
  3255. [PARAMETERS]
  3256.  
  3257. Status
  3258. Key1
  3259. Key2
  3260.  
  3261. [RETURNS]
  3262.  
  3263. (None)
  3264.  
  3265. [DESCRIPTION]
  3266.  
  3267. [SEE-ALSO]
  3268.  
  3269. [EXAMPLE]
  3270.  
  3271.  
  3272. ──────────────────────────────────────────────────────────────────────────────
  3273.  
  3274.  
  3275. [FUNCTION]
  3276.  
  3277. Procedure WHelpKeyProc(      Status    : BYTE;
  3278.                              Key1      : CHAR;
  3279.                              Key2      : CHAR    );
  3280.  
  3281. [PARAMETERS]
  3282.  
  3283. Status
  3284. Keu1
  3285. Key2
  3286.  
  3287. [RETURNS]
  3288.  
  3289. (None)
  3290.  
  3291. [DESCRIPTION]
  3292.  
  3293. [SEE-ALSO]
  3294.  
  3295. [EXAMPLE]
  3296.  
  3297.  
  3298. ──────────────────────────────────────────────────────────────────────────────
  3299.  
  3300.  
  3301. [FUNCTION]
  3302.  
  3303. Procedure WOldHelp;
  3304.  
  3305. [PARAMETERS]
  3306.  
  3307. (None)
  3308.  
  3309. [RETURNS]
  3310.  
  3311. (None)
  3312.  
  3313. [DESCRIPTION]
  3314.  
  3315. This is the Original Help Routine of the Window Library.
  3316.  
  3317. What is would do is read a Text File and create a scrolling Window
  3318. in which would be the specific Help Text for the action being done.
  3319.  
  3320. The user would create a text file using the predefined format with
  3321. each help menu having an ID.  Before calling the help function, the
  3322. programmer would set the ID for the item in question.
  3323.  
  3324. [SEE-ALSO]
  3325.  
  3326. [EXAMPLE]
  3327.  
  3328.  
  3329. ──────────────────────────────────────────────────────────────────────────────
  3330.  
  3331.  
  3332. [FUNCTION]
  3333.  
  3334. Function WGetLastOPROTsrPtr : Pointer;
  3335.  
  3336. [PARAMETERS]
  3337.  
  3338. (None)
  3339.  
  3340. [RETURNS]
  3341.  
  3342. Pointer to Last Object Professional TSR Pointer
  3343.  
  3344. [DESCRIPTION]
  3345.  
  3346. Returns the Pointer of the Previous Object Professional TSR Routine Ptr.
  3347.  
  3348. [SEE-ALSO]
  3349.  
  3350. [EXAMPLE]
  3351.  
  3352. Uses VGen,VWinHigh;
  3353.  
  3354. VAR
  3355.   P : POINTER;
  3356.  
  3357. BEGIN
  3358.  
  3359.   P := WGetLastOPROTsrPtr;
  3360.  
  3361.   If P <> NIL Then
  3362.     WriteLn( 'Prev TSR : ',PtrToHex( P ) )
  3363.   Else
  3364.     WriteLn( 'Prev TSR : NIL' );
  3365.  
  3366. END;
  3367.  
  3368.  
  3369. ──────────────────────────────────────────────────────────────────────────────
  3370.  
  3371.  
  3372. [FUNCTION]
  3373.  
  3374. Function WModulePtrByName(         var ModuleName : STRING ) : WIfcPtr;
  3375.  
  3376. [PARAMETERS]
  3377.  
  3378. ModuleName  VAR Returned Name of IfcRecord to Locate
  3379.  
  3380. [RETURNS]
  3381.  
  3382. Function : None
  3383. (VAR     : [ModuleName] Name of IfcRecord to Locate)
  3384.  
  3385. [DESCRIPTION]
  3386.  
  3387. This procedure returns a pointer to the IfcRecord for the Module
  3388. named or NIL.
  3389.  
  3390. [SEE-ALSO]
  3391.  
  3392. [EXAMPLE]
  3393.  
  3394.  
  3395. ──────────────────────────────────────────────────────────────────────────────
  3396.  
  3397.  
  3398. [FUNCTION]
  3399.  
  3400. Procedure WHorizLine(        Y         : INTEGER;
  3401.                              LType     : INTEGER );
  3402.  
  3403. [PARAMETERS]
  3404.  
  3405. Y        Y Horizontal Position in Window
  3406. LType    Line Type (1=Single, 2=Double)
  3407.  
  3408. [RETURNS]
  3409.  
  3410. (None)
  3411.  
  3412. [DESCRIPTION]
  3413.  
  3414. Draws a Horizontal Bar from Left to Right of the current window at
  3415. the given Y position.
  3416.  
  3417. [SEE-ALSO]
  3418.  
  3419. WVertLine
  3420.  
  3421. [EXAMPLE]
  3422.  
  3423. BEGIN
  3424.  
  3425.   WNew( 5, 2, 20, 7, WHITE,CYAN,WHITE,CYAN,'Window' );
  3426.  
  3427.   WVertLine( 5, 1 );
  3428.  
  3429.   While NOT WKeyPressed Do;
  3430.  
  3431.   WDispose( 'Window' );
  3432.  
  3433. END;
  3434.  
  3435.  
  3436. ──────────────────────────────────────────────────────────────────────────────
  3437.  
  3438.  
  3439. [FUNCTION]
  3440.  
  3441. Procedure WVertLine( X     : INTEGER;
  3442.                      LType : INTEGER  );
  3443.  
  3444. [PARAMETERS]
  3445.  
  3446. X        X Vertical Position in Window
  3447. LType    Line Type (1=Single, 2=Double)
  3448.  
  3449. [RETURNS]
  3450.  
  3451. (None)
  3452.  
  3453. [DESCRIPTION]
  3454.  
  3455. Draws a Vertical Bar from top to bottom of the current window at the
  3456. given X position.
  3457.  
  3458. [SEE-ALSO]
  3459.  
  3460. WhorizLine
  3461.  
  3462. [EXAMPLE]
  3463.  
  3464. BEGIN
  3465.  
  3466.   WNew( 5, 2, 20, 7, WHITE,CYAN,WHITE,CYAN,'Window' );
  3467.  
  3468.   WVertLine( 5, 1 );
  3469.  
  3470.   While NOT WKeyPressed Do;
  3471.  
  3472.   WDispose( 'Window' );
  3473.  
  3474. END;
  3475.  
  3476.